zoukankan      html  css  js  c++  java
  • UIView / UIImage 截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)

    寫iOS App我最怕遇到的三樣處理, 大概就是1.影音, 2.網路 3.圖片
    沒了這三樣還能叫App嗎? 大概是我coding功力不夠吧
    今天來講講圖片的處理...

    圖片的處理大概就分這幾樣了截圖(capture), 縮放(scale),設定大小(resize), 儲存(save)
    這幾樣比較好處理, 另外還有濾鏡, 擦拭等, 以後再說
    在這個Demo code裡, 我寫了幾個方法

    1.等比率縮放
    - (UIImage *)scaleImage:(UIImage *)imagetoScale:(float)scaleSize
    {
     

    UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize);
     [image drawInRect:CGRectMake(0, 0,image.size.width * scaleSize, image.size.height *scaleSize)];
     UIImage *scaledImage =UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();
     return scaledImage;
    }

    2.自定長寬
    - (UIImage *)reSizeImage:(UIImage *)imagetoSize:(CGSize)reSize
    {
     UIGraphicsBeginImageContext(CGSizeMake(reSize.width,reSize.height));
     [image drawInRect:CGRectMake(0, 0, reSize.width,reSize.height)];
     UIImage *reSizeImage =UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();
     return reSizeImage;
    }

    3.處理某個特定View
    只要是繼承UIVIEW的object 都可以處理
    必須先importQuzrtzCore.framework
    -(UIImage*)captureView:(UIView *)theView
    {
     CGRect rect = theView.frame;
     UIGraphicsBeginImageContext(rect.size);
     CGContextRef context =UIGraphicsGetCurrentContext();
     [theView.layer renderInContext:context];
     UIImage *img =UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();
     return img;
    }

    4.儲存圖片
    儲存圖片這裡我分成儲存到app的文件裡, 儲存到手機的圖片庫裡
    儲存到app
    NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];
    [UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];
    這樣就把你要處理的圖片, 以image.png這個檔名存到app home底下的Documents目錄裡

    儲存到手機圖片庫裡
    CGImageRef screen = UIGetScreenImage();
    UIImage* image = [UIImage imageWithCGImage:screen];
    CGImageRelease(screen);
    UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
    UIGetScreenImage()原本是private(私有)api, 用來截取整個畫面
    不過SDK 4.0後apple就開放了
    另外儲存到手機的圖片庫裡, 必須在實機使用, 模擬器無法使用
  • 相关阅读:
    C# savefiledialog 保存文件后 再操作数据库 提示数据库文件路径错误
    转:在C#中使用Nullable类型
    转:Global.asax通过Application_BeginRequest()事件实现访问链接的静态地址映射
    DZ7.0自动伸缩广告
    转:使用HttpModule来实现sql的防注入
    转:System.Web.UI.Page类的构造函数的执行时机
    使用ISAPI_Rewrite做简单实用的301重定向
    IIS7添加ASP.NET网站碰到的问题
    IE9 崩溃的解决方法
    利用ZEND Studio与Zend server对PHP WEB进行调试
  • 原文地址:https://www.cnblogs.com/greywolf/p/2615454.html
Copyright © 2011-2022 走看看