gpt4 book ai didi

iphone - 多点裁剪后的UIImage如何保存?

转载 作者:行者123 更新时间:2023-12-03 19:54:23 24 4
gpt4 key购买 nike

我想在图像上进行多点裁剪(参见图像)。它工作正常。我的问题是裁剪图像后如何保存 UIImage。我正在使用 CAShapeLayer 来裁剪图像。下面的代码用于多点裁剪。

- (void)multiPointCrop:(CGPoint)cropPoint
{
UIBezierPath *aPath = [UIBezierPath bezierPath];
[aPath moveToPoint:cropPoint];

for (NSString *pointString in self.touchPoints) {
if ([self.touchPoints indexOfObject:pointString] != 0)
[aPath addLineToPoint:CGPointFromString(pointString)];
}
[aPath addLineToPoint:cropPoint];
[aPath closePath];

[self setClippingPath:aPath andView:self];
[self setNeedsDisplay];
}

- (void)setClippingPath:(UIBezierPath *)clippingPath andView:(UIView *)view;
{
if (![[view layer] mask])
[[view layer] setMask:[CAShapeLayer layer]];

[(CAShapeLayer*) [[view layer] mask] setPath:[clippingPath CGPath]];
}

如何从 CAShapeLayer 保存 UIImage?如果这是多重裁剪的正确方法或任何其他简单的方法来实现这一点。请提供您的想法、建议、源代码等。任何内容都欢迎。 enter image description here

最佳答案

尝试将图层渲染到上下文中并从该上下文创建图像。

CALayer *layer = view.layer;
CGSize s = layer.frame.size;
// create context
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, s.width, s.height,
8, (s.width * 4),
colorSpace, kCGImageAlphaPremultipliedLast);

// flip Y
CGContextTranslateCTM(context, 0.0, s.height);
CGContextScaleCTM(context, 1.0, -1.0);

// render layer
[layer renderInContext:context];

CGImageRef imgRef = CGBitmapContextCreateImage(context);
// here is your image
UIImage *img = [UIImage imageWithCGImage:imgRef];

// release owned memory
CGImageRelease(imgRef);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);

关于iphone - 多点裁剪后的UIImage如何保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063441/

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