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]; 

此方法在保持高宽比的同时保持缩放比例。 如果缩小图像的宽度比高度更宽(反之亦然),则还会在图像中添加缩进。