剪切UIImage我有一些调整图像大小的代码,这样我就可以得到图像中心的一个缩放块-我用它来获取一个UIImage并返回一个小的,方形的图像表示,类似于在相册视图中看到的照片应用程序。(我知道我需要一个UIImageView并调整裁剪模式以获得相同的结果,但这些图像有时会显示在UIWebViews).在这段代码中,我开始注意到一些崩溃,我有点困惑。我有两种不同的理论,我想知道两者是否都是根据的。理论1)我通过绘制到目标大小的屏幕外图像上下文来实现裁剪。因为我想要图像的中心部分,所以我设置了CGRect传递给drawInRect比我的图像上下文范围更大的东西。我本来希望这是犹太人,但我是不是在试图去回忆我不该去触摸的其他记忆呢?理论2)我所有这些都是在后台做的。我知道UIKit的一些部分被限制在主线程上。我以为/希望画到屏幕外的视图不是其中之一。我错了吗?(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:方法)
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
- (UIImage *)crop:(CGRect)rect { if (self.scale > 1.0f) { rect = CGRectMake(rect.origin.x * self.scale, rect.origin.y * self.scale, rect.size.width * self.scale, rect.size.height * self.scale); } CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect); UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; CGImageRelease(imageRef); return result;}
翻阅古今
TA贡献1780条经验 获得超5个赞
@implementation UIImage (Crop)- (UIImage *)crop:(CGRect)rect { rect = CGRectMake(rect.origin.x*self.scale, rect.origin.y*self.scale, rect.size.width*self.scale, rect.size.height*self.scale); CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], rect); UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; CGImageRelease(imageRef); return result;}@end
UIImage *imageToCrop = <yourImageToCrop>;CGRect cropRect = <areaYouWantToCrop>; //for example//CGRectMake(0, 40, 320, 100);UIImage *croppedImage = [imageToCrop crop:cropRect];
- 3 回答
- 0 关注
- 427 浏览
添加回答
举报
0/150
提交
取消