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

标签 ios image-processing uiimage

我有一个生成各种图像/绘图的 iOS 应用程序,然后我使用 UIImage 类将其保存到设备。图像最终的分辨率相当低 - 有没有办法强制使用更高的分辨率,或者甚至生成要从 iOS 应用程序保存的矢量?

编辑:这里是代码如何运行的一些细节

为了创建图像,我创建了多个片段 - CAShapeLayer() 和 UIBezierPath()。我将它们作为子层添加到其中创建了图像的 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)

最佳答案

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

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

关于ios - 有没有办法在我的 iOS 应用程序中创建高分辨率图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33287562/

相关文章:

ios - 是否可以在 Mavericks 上创建与 Xcode 5.0.2 兼容的应用程序 iOS 4 - iOS 7?

ios - 无法在 Xcode 9 中读取 Images.xcassets 的文件属性

php - 使用 PHP/GD,如何修剪图像?

图像转换库 : Word, PDF、Excel 到图像

ios - 在objective-c的UIImage中图像名称为null

objective-c - 在 UIImage 上使用 UIActivityViewController 时,有没有办法指定图像格式?

ios - 使用 XCTest 进行自动推送通知测试

ios - 读取文档目录中的 .txt 文件

CSS:图像透明度键

ios - 使用使用 capInsets 增长图像的 CoreGraphics 绘制 UIImage