是否有可能在不损失质量的情况下调整UIImage的大小?

我有一个UIImage,我放在UIImageView中,它附有一个捏手势识别器,我用它来缩放图像。 当我在UIImageView中缩放图像时,没有失真,它可以完美缩放。 但是,我需要调整UIImage的大小,而不是在UIImageView中,当我使用下面的代码执行此操作时,结果略有偏差:

CGFloat width = self.imageView.frame.size.width; CGFloat height = self.imageView.frame.size.height; UIGraphicsBeginImageContext(CGSizeMake(width, height)); [self.image drawInRect:CGRectMake(0, 0, width, height)]; UIImage *resizedImage = [UIGraphicsGetImageFromCurrentImageContext() retain]; UIGraphicsEndImageContext(); 

正如您所看到的,我从imageView获取高度和宽度,因为这是图像需要缩放到的位置。

我知道如果imageView能够做到这一点,必须能够完美地扩展它,是否有人碰巧知道我做错了什么?

更新:我附加了一个图像的前/后(用户在图像视图中重新调整)以及它在使用上述方法resize后的外观。 之前后

尝试这个:

 + (UIImage*)rescaleImage:(UIImage *)image scaledToSize:(CGRect)newSize { UIGraphicsBeginImageContext(newSize.size); [image drawInRect:newSize]; UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return resImage; } 

我有同样的问题,我使用以下代码来帮助修复它:

  CGFloat scale = 1.0; if([[UIScreen mainScreen]respondsToSelector:@selector(scale)]) { CGFloat tmp = [[UIScreen mainScreen]scale]; if (tmp > 1.5) { scale = 2.0; } } if(scale > 1.5) { UIGraphicsBeginImageContextWithOptions(targetSize, NO, scale); } else { UIGraphicsBeginImageContext(targetSize); }