各位高手顯卡,我想知道這兩個方法之一是調整一個UIImage更好:調整UIImage大小的方法更好,爲什麼?
第一個我遇到簡單,流行,如下:
-(UIImage *)resizeImage:(UIImage *)image width:(CGFloat)resizedWidth height:(CGFloat)resizedHeight
{
UIGraphicsBeginImageContext(CGSizeMake(resizedWidth ,resizedHeight));
[image drawInRect:CGRectMake(0, 0, resizedWidth, resizedHeight)];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
,我發現這個鏈接http://iphonesdksnippets.com/post/2009/05/06/Resize-image-and-keep-aspect-ratio.aspx,似乎完成了與上述相同,但更復雜的(我真的不明白是怎麼回事)第二種方法:
-(UIImage *)resizeImage:(UIImage *)image width:(CGFloat)resizedWidth height:(CGFloat)resizedHeight
{
CGImageRef imageRef = [image CGImage];
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap = CGBitmapContextCreate(NULL, resizedWidth, resizedHeight, 8, 4 * resizedWidth, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(bitmap, CGRectMake(0, 0, resizedWidth, resizedHeight), imageRef);
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage *result = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap);
CGImageRelease(ref);
return result;
}
所以米問題是,哪種方式更好,爲什麼?
低級方法=在調整大小後保持質量更好嗎? @tom –
我想UIImage的drawInRect方法將在內部使用CGContextDrawImage ... – Tom