IOS:调整UIImage的大小问题
我想要调整一个UIImage,我试试这个代码:
UIImage *newImage = [image1toResize _imageScaledToSize:CGSizeMake(290, 390) interpolationQuality:1];
但我有这个警告:警告:'UIImage'可能不会响应'-_imageScaledToSize:'
为什么?
_imageScaledToSize不是UIImage函数。 如果这个函数是你正在使用的第三方库的一部分,那么你需要确保你在你的文件中input了正确的头文件。
你没有要求它,但万一你有兴趣在如何…这是一个非常简单的代码来做到这一点:
CGSize newSize = CGSizeMake(1024, 768); //whaterver size UIGraphicsBeginImageContext(newSize); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
您可以通过doiingresize:
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { //UIGraphicsBeginImageContext(newSize); UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }
您可以在UIImage
上使用这些类别来操作UIImage
对象(例如调整它们的大小或裁剪它们):
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
这是因为UIImage
类没有这样的方法。 在这里可以find可用的UIImage
方法列表
最好的方式来缩放图像,而不失去纵横比(即没有延长的责任)是使用这种方法:
//to scale images without changing aspect ratio
+(UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)newSize {
float width = newSize.width; float height = newSize.height; UIGraphicsBeginImageContext(newSize); CGRect rect = CGRectMake(0, 0, width, height); float widthRatio = image.size.width / width; float heightRatio = image.size.height / height; float divisor = widthRatio > heightRatio ? widthRatio : heightRatio; width = image.size.width / divisor; height = image.size.height / divisor; rect.size.width = width; rect.size.height = height; //indent in case of width or height difference float offset = (width - height) / 2; if (offset > 0) { rect.origin.y = offset; } else { rect.origin.x = -offset; } [image drawInRect: rect]; UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return smallImage;
}
将此方法添加到Utility类中,以便可以在整个项目中使用它,并像这样访问它:
xyzImageView.image = [Utility scaleImage:yourUIImage toSize:xyzImageView.frame.size];
此方法在保持高宽比的同时保持缩放比例。 如果缩小图像的宽度比高度更宽(反之亦然),则还会在图像中添加缩进。