寫iOS App我最怕遇到的三樣處理, 大概就是1.影音, 2.網路 3.圖片
沒了這三樣還能叫App嗎? 大概是我coding功力不夠吧今天來講講圖片的處理...圖片的處理大概就分這幾樣了截圖(capture), 縮放(scale), 設定大小(resize), 儲存(save)這幾樣比較好處理, 另外還有濾鏡, 擦拭等, 以後再說在這個Demo code裡, 我寫了幾個方法1.等比率縮放- (UIImage *)scaleImage:(UIImage *)image toScale:(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 *)image toSize:(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 都可以處理 必須先import QuzrtzCore.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:path atomically: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就開放了 另外儲存到手機的圖片庫裡, 必須在實機使用, 模擬器無法使用
来自: