裁剪UIImage
时间:2020-03-06 14:59:23 来源:igfitidea点击:
我有一些代码可以调整图像的大小,因此我可以获取图像中心的缩放块,用它来获取UIImage并返回图像的小正方形表示,类似于在相册中看到的"照片"应用的视图。 (我知道我可以使用UIImageView
并调整裁剪模式以获得相同的结果,但是这些图像有时会显示在UIWebViews
中)。
我开始注意到这段代码中有些崩溃,我有些困惑。我有两种不同的理论,我想知道两者中的任何一种都是基于基础的。
理论1)我通过绘制到目标大小的屏幕外图像上下文来实现裁剪。因为我想要图像的中心部分,所以我将传递给drawInRect的CGRect参数设置为大于图像上下文边界的值。我本以为这是犹太洁食,但我是不是想利用我不应该碰到的其他记忆?
理论2)我正在后台线程中完成所有这些工作。我知道UIKit的某些部分仅限于主线程。我以为/希望绘制到屏幕外的视图不是其中之一。我错了吗?
(哦,我怎么想念NSImage的drawInRect:fromRect:operation:fraction:`方法。)
解决方案
2014年5月28日更新:我在iOS 3左右是新事物时写了这篇文章,我敢肯定,目前有更好的方法可以做到这一点,可能是内置的。正如许多人所提到的,这种方法没有考虑轮换。阅读一些其他答案,并散布一些赞美之词,以使对此问题的回答对每个人都有帮助。
原始回复:
我将在其他地方复制/粘贴对相同问题的回答:
没有简单的类方法可以执行此操作,但是可以使用一个函数来获得所需的结果:CGImageCreateWithImageInRect(CGImageRef,CGRect)
将为我们提供帮助。
这是一个使用它的简短示例:
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect); // or use the UIImage wherever you like [UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; CGImageRelease(imageRef);