gpt4 book ai didi

ios - 允许用户在 UIImage 上绘制矩形,以裁剪图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:49 35 4
gpt4 key购买 nike

我敢肯定这个问题已经从各种不同的角度被问过很多次,但我目前还无法在这里找到答案。

我想要实现的目标我想要做的是显示一个 UIImage,并允许用户在图像上绘制一个矩形,并最终裁剪他们的选择。

目前的研究我在 SO 上发现了以前的问题来处理裁剪,但是他们经常处理不改变的静态裁剪区域,这确实导致了这种机制的以下限制

  1. 您感兴趣的图像区域可能位于任何地方,例如,如果你试图裁剪路标,它可能以一个图像为中心,但在另一个图像上左对齐,因此你无法预测要裁剪哪个区域。
  2. 感兴趣区域的大小和比例可能会发生变化,例如一张图片可能是该路标的特写,因此裁剪区域会更大,但另一个图像可能是从距离意味着裁剪区域会更小。

结合以上两个变量,几乎不可能准确预测图像中感兴趣的区域在哪里,所以我依赖于用户通过能够在周围“绘制”一个框来定义它我们感兴趣的区域,在本例中是路标。

这在 Android 上非常好,因为您可以出于好意将所有艰苦的工作委派出去,例如:

Intent intent = new Intent("com.android.camera.action.CROP");

但是,我找不到适用于 iOS 的等效项。

我从 source 中找到了这段代码:

- (UIImage *)imageByDrawingCircleOnImage:(UIImage *)image
{
// begin a graphics context of sufficient size
UIGraphicsBeginImageContext(image.size);

// draw original image into the context
[image drawAtPoint:CGPointZero];

// get the context for CoreGraphics
CGContextRef ctx = UIGraphicsGetCurrentContext();

// set stroking color and draw circle
[[UIColor redColor] setStroke];

// make circle rect 5 px from border
CGRect circleRect = CGRectMake(0, 0,
image.size.width,
image.size.height);
circleRect = CGRectInset(circleRect, 5, 5);

// draw circle
CGContextStrokeEllipseInRect(ctx, circleRect);

// make image out of bitmap context
UIImage *retImage = UIGraphicsGetImageFromCurrentImageContext();

// free the context
UIGraphicsEndImageContext();

return retImage;
}

我认为这是裁剪的一个很好的起点(但是它会裁剪麦田圈),它确实依赖于在调用 CGRectMake 时预定义要裁剪的区域。

previous question还详细介绍了如何进行实际裁剪。

我假设要允许用户绘制矩形,我需要与 Gestures 集成吗?

问题:我如何允许用户在 ImageView 上绘制一个矩形,以裁剪该区域?

最佳答案

你可以给BJImageCropper尝试一下:

A simple UIView subclass that allows a user to crop an image. If you use it, I'd love to know! Twitter: @barrettjacobsen

关于ios - 允许用户在 UIImage 上绘制矩形,以裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849330/

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