用多个图像和标签构建 png 文件



我有一些UIImageViewsUILabels,您可以在编辑器中在屏幕上拖动。 这些图像是具有非常高分辨率(>2400px(的png,但在屏幕上它们可能看起来更小

我想从该屏幕生成一个 png 文件(包括某些位置的标签和图像(,该文件将保存这些图像的实际大小 (>2400px(。

如果我只是以编程方式捕获屏幕(渲染(,他将生成屏幕大小的图像,并且它不会是透明的。

如何通过将图像和文本放置在我想要的任何大小和位置来自己构建 png 文件?

例如:

if let image = UIImage(named: "example.png") {
if let data = UIImagePNGRepresentation(image) {
let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
try? data.write(to: filename)
}
}

允许您指定位置或向文件添加多个图像和文本

找到了一种非常简单而甜蜜的方法,首先将所有屏幕元素保存在字典中,然后您可以简单地将它们添加到文件中:

let font = UIFont.boldSystemFont(ofSize: 160)
let showText:NSString = "hello world"
// setting attr: font name, color...etc.
let attr = [NSFontAttributeName: font, NSForegroundColorAttributeName:UIColor.blue]
// getting size
let sizeOfText = showText.size(attributes: attr)
let image = UIImage(named: "image.png")
let rect = CGRect(x: 0, y: 0, width: image!.size.width,height: image!.size.height)

UIGraphicsBeginImageContextWithOptions(CGSize(width: rect.size.width, height: rect.size.height), false, 0)
// drawing our image to the graphics context
image?.draw(in: rect)
// drawing text
showText.draw(in: CGRect(x: rect.size.width/2.0, y: rect.size.height/2.0, width: rect.size.width, height: rect.size.height), withAttributes: attr)

// getting an image from it
let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext()

最新更新