为了账号安全,请及时绑定邮箱和手机立即绑定

剪切UIImage

剪切UIImage

iOS
慕容708150 2019-06-19 10:44:34
剪切UIImage我有一些调整图像大小的代码,这样我就可以得到图像中心的一个缩放块-我用它来获取一个UIImage并返回一个小的,方形的图像表示,类似于在相册视图中看到的照片应用程序。(我知道我需要一个UIImageView并调整裁剪模式以获得相同的结果,但这些图像有时会显示在UIWebViews).在这段代码中,我开始注意到一些崩溃,我有点困惑。我有两种不同的理论,我想知道两者是否都是根据的。理论1)我通过绘制到目标大小的屏幕外图像上下文来实现裁剪。因为我想要图像的中心部分,所以我设置了CGRect传递给drawInRect比我的图像上下文范围更大的东西。我本来希望这是犹太人,但我是不是在试图去回忆我不该去触摸的其他记忆呢?理论2)我所有这些都是在后台做的。我知道UIKit的一些部分被限制在主线程上。我以为/希望画到屏幕外的视图不是其中之一。我错了吗?(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:方法)
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

若要在保持相同大小和方向的同时裁剪视网膜图像,请在UIImage类别(IOS 4.0及以上)中使用以下方法:

- (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;}


查看完整回答
反对 回复 2019-06-19
?
翻阅古今

TA贡献1780条经验 获得超5个赞

您可以创建一个UIImage类别,并在任何需要的地方使用它。基于hitScans的回应和评论,以下是它。

@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];


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 427 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信