की आप ग्राफिक्स विशेषज्ञों सभी के लिए, मैं सोच रहा था जो इन दोनों तरीकों में से एक एक 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