我有一个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能够做到这一点,必须能够完美地扩展它,是否有人碰巧知道我做错了什么?
更新:我附加了一个图像的前/后(用户在图像视图中重新调整过的图像)以及使用上述方法调整大小后的图像。 < / p>
答案 0 :(得分:1)
试试这个:
+ (UIImage*)rescaleImage:(UIImage *)image scaledToSize:(CGRect)newSize {
UIGraphicsBeginImageContext(newSize.size);
[image drawInRect:newSize];
UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resImage;
}
答案 1 :(得分:1)
我遇到了同样的问题,我使用以下代码来帮助修复它:
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);
}