我有一些调整图像大小的代码,这样我就可以获得图像中心的缩放块 - 我用它来拍摄UIImage
并返回图像的小方形表示,类似于照片应用程序的相册视图中看到的内容。 (我知道我可以使用UIImageView
并调整裁剪模式以达到相同的结果,但这些图像有时会显示在UIWebViews
).
我开始注意到这段代码中出现了一些崩溃,我有点困惑。我有两种不同的理论,我想知道其中一种是否有根据。
理论 1) 我通过绘制目标尺寸的屏幕外图像上下文来实现裁剪。因为我想要图像的中心部分,所以我设置CGRect
参数传递给drawInRect
到大于我的图像上下文范围的东西。我希望这是犹太洁食,但我是否试图掩盖其他我不应该触及的记忆?
理论 2)我在后台线程中完成所有这些工作。我知道 UIKit 的某些部分仅限于主线程。我假设/希望绘制到屏幕外视图不是其中之一。我错了吗?
(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:
方法。)
2014-05-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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)