是否有可能在不损失质量的情况下调整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); }