有没有办法在我的ios应用程序中创建高分辨率图像?

时间:2015-10-22 17:58:33

标签: ios image-processing uiimage

我有一个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)

1 个答案:

答案 0 :(得分:1)

如果要生成“矢量”文件,最简单的方法是生成PDF。您可以使用UIGraphicsBeginPDFContextToFileUIGraphicsBeginPDFContextToData代替UIGraphicsBeginImageContextWithOptions。您可以找到有关使用此功能的Apple文档(以及您还需要调用的其他功能)here

如果要生成包含更多像素的光栅图像,只需将较大比例作为最后一个参数传递给UIGraphicsBeginImageContextWithOptions。您当前使用的零意味着“当前设备主屏幕的比例”,因此它可能是2(对于正常的Retina屏幕)或3(对于iPhone 6 Plus屏幕)。你可以传递任何你想要的号码。它不必是整数。