gpt4 book ai didi

ios - 从转换后的 UIImageView 裁剪 UIImage

转载 作者:可可西里 更新时间:2023-11-01 06:16:40 26 4
gpt4 key购买 nike

我让用户从相机捕捉图像或从库中选择一张。我在 UIImageView 中显示此图像。用户现在可以在边界框内缩放和定位图像,就像您在 allowsEditing 设置为 YES 时使用 UIImagePickerController 所做的那样。

当用户对结果感到满意并点击“完成”时,我想生成一个裁剪过的 UIImage。使用 CGImageCreateWithImageInRect 时会出现问题,因为这没有考虑缩放。像这样将转换应用于 imageView:

CGAffineTransform transform = CGAffineTransformScale(self.imageView.transform, newScale, newScale);
[self.imageView setTransform:transform];

使用手势识别器。

我假设正在发生的事情是; UIImageView 被缩放和移动,然后它应用 UIViewContentModeScaleAspectFit 到 UIImage 被保留,当我要求它裁剪图像时,它确实这样做了 - 不考虑缩放定位。我这么认为的原因是,如果我不缩放或移动图像,而是直接点击“完成”,裁剪就会起作用。

我像这样裁剪图像:

- (UIImage *)cropImage:(UIImage*) img toRect:(CGRect)rect {

CGFloat scale = [[UIScreen mainScreen] scale];

if (scale>1.0) {
rect = CGRectMake(rect.origin.x*scale , rect.origin.y*scale, rect.size.width*scale, rect.size.height*scale);
}

CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], rect);
UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.imageView.image.scale orientation:self.imageView.image.imageOrientation];
// UIImage *result = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return result;
}

从我的主视图的 subview (方形覆盖框,如 UIImagePickerController 中)传递一个 cropRect。主 UIView 有一个缩放的 UIImageView 和一个显示裁剪矩形的 UIView。

如何实现“所见即所得”的裁剪效果以及我必须考虑哪些因素。或者如果我应该以不同的方式实现层次结构或缩放,可能会提出建议。

最佳答案

尝试一个简单的技巧。 Apple 在其网站上提供了示例,展示了如何使用代码放大照片。完成缩放后,使用图形上下文获取边界 View 的帧大小,并使用它获取图像。例如,Uiview 包含具有缩放图像的 ScrollView 。因此, ScrollView 会缩放,您的图像也会缩放,现在获取边界 UIview 的帧大小,并从中创建图像上下文,然后将其另存为新图像。告诉我这是否有意义。

干杯:)

关于ios - 从转换后的 UIImageView 裁剪 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com