我使用手機(640 * 480)製作照片並將其放入uiimageview (300*300)
中,並使用刻度填充選項集。 我需要發送uiimageview (300*300, croped, resized)
內部顯示的相同圖像到服務器....如何從具有縮放填充選項集的uiimageview中獲得uiimage
我怎樣才能得到它?
我使用手機(640 * 480)製作照片並將其放入uiimageview (300*300)
中,並使用刻度填充選項集。 我需要發送uiimageview (300*300, croped, resized)
內部顯示的相同圖像到服務器....如何從具有縮放填充選項集的uiimageview中獲得uiimage
我怎樣才能得到它?
通過將UIImageView圖層渲染爲圖形上下文,有一種很快的骯髒方法可以做到這一點。
UIGraphicsBeginImageContext(self.bounds.size);
[self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
您需要爲此導入<QuartzCore/QuartzCore.h>
。
另一種方法是做AspectFilling你自己的計算。
CGSize finalImageSize = CGSizeMake(300,300);
CGImageRef sourceImageRef = yourImage.CGImage;
CGFloat horizontalRatio = finalImageSize.width/CGImageGetWidth(sourceImageRef);
CGFloat verticalRatio = finalImageSize.height/CGImageGetHeight(sourceImageRef);
CGFloat ratio = MAX(horizontalRatio, verticalRatio); //AspectFill
CGSize aspectFillSize = CGSizeMake(CGImageGetWidth(sourceImageRef) * ratio, CGImageGetHeight(sourceImageRef) * ratio);
CGContextRef context = CGBitmapContextCreate(NULL,
finalImageSize.width,
finalImageSize.height,
CGImageGetBitsPerComponent(sourceImageRef),
0,
CGImageGetColorSpace(sourceImageRef),
CGImageGetBitmapInfo(sourceImageRef));
//Draw our image centered vertically and horizontally in our context.
CGContextDrawImage(context,
CGRectMake((finalImageSize.width-aspectFillSize.width)/2,
(finalImageSize.height-aspectFillSize.height)/2,
aspectFillSize.width,
aspectFillSize.height),
sourceImageRef);
//Start cleaning up..
CGImageRelease(sourceImageRef);
CGImageRef finalImageRef = CGBitmapContextCreateImage(context);
UIImage *finalImage = [UIImage imageWithCGImage:finalImageRef];
CGContextRelease(context);
CGImageRelease(finalImageRef);
return finalImage;
我下臺投票是因爲? –