我有一个iOS应用程序,可生成各种图像/绘图,然后我使用UIImage类保存到设备。图像的分辨率相当低 - 有没有办法强制提高分辨率,甚至生成从iOS应用程序保存的矢量?
编辑:以下是代码如何运行的一些细节
要创建图像,我使用UIBezierPath()创建多个段 - CAShapeLayer()。我将这些子层添加到UIView中,其中包含在其中创建的图像,简要缩写为:
for i in 0...segmentCounter-1
{
let path = UIBezierPath() // this is generated in a function with some funky logic for points, colors, etc - UIBezierPath() is a placeholder
let shapeLayer = CAShapeLayer()
shapeLayer.opacity = 0.8;
shapeLayer.path = path.CGPath
self.layer.addSublayer(layer)
}
在运行几次并创建了具有多个图层的图像后,我使用以下代码保存图像:
UIGraphicsBeginImageContextWithOptions(self.drawingView.layer.bounds.size, false, 0)
self.drawingView.drawViewHierarchyInRect(self.drawingView.layer.bounds, afterScreenUpdates: true)
let img:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIImageWriteToSavedPhotosAlbum(img, self, "image:didFinishSavingWithError:contextInfo:", nil)
答案 0 :(得分:1)
如果要生成“矢量”文件,最简单的方法是生成PDF。您可以使用UIGraphicsBeginPDFContextToFile
或UIGraphicsBeginPDFContextToData
代替UIGraphicsBeginImageContextWithOptions
。您可以找到有关使用此功能的Apple文档(以及您还需要调用的其他功能)here。
如果要生成包含更多像素的光栅图像,只需将较大比例作为最后一个参数传递给UIGraphicsBeginImageContextWithOptions
。您当前使用的零意味着“当前设备主屏幕的比例”,因此它可能是2(对于正常的Retina屏幕)或3(对于iPhone 6 Plus屏幕)。你可以传递任何你想要的号码。它不必是整数。