在 iPhone 中裁剪后 UIImage 显示模糊

Posted

技术标签:

【中文标题】在 iPhone 中裁剪后 UIImage 显示模糊【英文标题】:UIImage showing blur after cropping in iPhone 【发布时间】:2012-08-24 12:36:22 【问题描述】:

我的应用程序,我有一个 uiscrollview 并在其上有子视图 uiimageview,当用户单击库中显示在该 imageview 上的任何照片时,用户可以移动、缩放和缩放图像,当用户单击裁剪按钮时,它应该裁剪该图像在 imageview 中的部分,在 iPhone 3GS 中它工作得非常好,但是在视网膜中它不能正常工作,裁剪显示不同的图像。

- (UIImage *)currentSlice 

    CGSize sliceSize = imageView.frame.size;

    UIGraphicsBeginImageContextWithOptions(sliceSize, NO, 0.0);
    [imageView.image drawInRect:CGRectMake(0, 0, sliceSize.width, sliceSize.height)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    CGRect sliceRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.width, scrollView.frame.size.height);
    CGImageRef imageSlice = CGImageCreateWithImageInRect(scaledImage.CGImage, sliceRect);
    return [UIImage imageWithCGImage:imageSlice];

我用这种方法裁剪,请帮我解决这个问题

【问题讨论】:

【参考方案1】:

帧大小不代表物理像素。 因此,如果您使用的是视网膜,请进行以下更改。

CGSize sliceSize = CGSizeMake(imageView.frame.size.width * 2.0, imageView.frame.size.height * 2.0);

CGRect sliceRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.width * 2.0, scrollView.frame.size.height * 2.0);

其他都还好。

【讨论】:

感谢您的快速回复,但是当我进行更改时,图像变成了两个大并且裁剪部分也不可见 而不是使用 2.0 使用 [UIScreen mainScreen].scale

以上是关于在 iPhone 中裁剪后 UIImage 显示模糊的主要内容,如果未能解决你的问题,请参考以下文章

裁剪图像更改 iPhone 中的旋转

裁剪 UIImage 的部分以获得新的纵横比并缩小到大小

UIImage 在裁剪后被旋转

裁剪后 UIImage 旋转 90 度

如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?

调整 UIImage 大小 - 性能问题