gpt4 book ai didi

ios - CGContextClipToMask 不在 iOS 中裁剪图像

转载 作者:行者123 更新时间:2023-11-28 12:56:03 25 4
gpt4 key购买 nike

我正在尝试将 UIImage 保存到照片库中,并使用以下方法来执行此操作:

func savePhoto() {
UIGraphicsBeginImageContextWithOptions(CGSize(width: device.x, height: device.y), false, 2.0)
CGContextClipToRect(UIGraphicsGetCurrentContext(), self.drawingCanvas)
self.mainImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: device.x, height: device.y), blendMode: CGBlendMode.Normal, alpha: 1.0)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}

图像保存成功,但问题是图像没有裁剪到 CGRect drawingCanvas 的大小,但导出的图像是相应屏幕的大小。

由于drawingCanvas的大小只有屏幕的2/3左右,所以在最终的图像中留下了一大片空白的白色区域。

此外,如果我打印 CGContextGetClipBoundingBox(UIGraphicsGetCurrentContext()),它会打印出正确的大小,这与 drawingCanvas 相同。

有人知道为什么最终图像没有被剪裁吗?

最佳答案

CoreGraphics 的剪裁完全符合预期。 “剪辑”的意思是“对于后续的绘图调用,只在我提供的矩形内部绘制,不要在它的外部绘制”。这就是为什么在您看到的图像之外有白色区域的原因。

剪辑不会使您的上下文变小,并且不会使结果图像变小。裁剪与裁剪不同。

如果您希望结果图像更小,您应该更改传递给 UIGraphicsBeginImageContextWithOptions 的大小。它不必基于任何特定设备。

从您的问题中不清楚您真正想要的尺寸。但是,如果您希望它基于绘图 Canvas 的大小,请改用它:

UIGraphicsBeginImageContextWithOptions(self.drawingCanvas, false, 2.0)
self.mainImageView.image?.drawInRect(CGRect(origin: CGPoint.zero, size:self.drawingCanvas))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

关于ios - CGContextClipToMask 不在 iOS 中裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34985358/

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