- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 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/
到目前为止,我正在尝试在 iOS 上复制 CGContextClipToMask 的行为,但运气不佳。有谁知道 CGContextClipToMask 在内部是如何工作的?我已经阅读了文档,它说它只是
我试图通过使用剪贴蒙版剪掉路径的笔划,只留下阴影,在圆角矩形内绘制一个嵌入阴影。最终目标是近似通知中心内事物的嵌入外观。 我失败了。 CGContextClipToMask 根本不起作用,这尤其令人抓
此代码生成下图。据我了解 CGContextClipToMask,红色矩形不应该可见,因为它在裁剪区域之外。我在这里错过了什么?感谢您的帮助! CGContextRef context = UIGra
我是 Quartz 新手。我有 2 张图像、一个背景和一个带有切口形状的蒙版,我想将其放在背景上以切出一个部分。生成的图像应该是切口的形状。这是我的面具(中间的形状是 0 alpha): 这是我的代码
我正在尝试将 UIImage 保存到照片库中,并使用以下方法来执行此操作: func savePhoto() { UIGraphicsBeginImageContextWithOptions(
我正在尝试为我的图像添加剪辑蒙版。然后用手指在屏幕上触摸作画。 手指触摸和剪辑蒙版有效,但问题是我的 UIImage 看起来上下颠倒。 我该如何纠正? 这是我的面具的代码行: CGContextCli
是否可以让 CGContextClipToMask 忽略蒙版图像的灰度值并像纯黑白一样工作? 我有一个灰度图像,当我将它用作 mask 时,灰色被解释为 alpha channel 。这很好,除了我需
我无法在 Internet 上找到一个示例来教我如何即时创建一个圆圈,然后使用该圆圈来剪辑 UIImage。 这是我的代码,不幸的是它没有给我想要的结果。 //create a graphics co
我是一名优秀的程序员,十分优秀!