我有多种尺寸的框架,可以硬编码,或服务器决定。我必须从图库中选择图像,这绝对可以是多维度的。
我正在使用代码生成白色背景UIImage。
让size = CGSize(宽度:424/2,高度:664/2)
UIGraphicsBeginImageContextWithOptions(size, true, 0)
UIColor.white.setFill()
UIRectFill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
let background_image: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
现在,我想要的是制作另一个图像,它保持前20像素,前20像素,宽度和高度比原始背景小20像素。
我怎样才能实现它。
在进入StackOverflow之前我尝试了什么。
func mergedImageWith(frontImage:UIImage?, backgroundImage: UIImage?) -> UIImage{
if (backgroundImage == nil) {
return frontImage!
}
let size = CGSize(width: 424/2, height: 664/2)
UIGraphicsBeginImageContextWithOptions(size, true, 0)
UIColor.white.setFill()
UIRectFill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
let backgroundImage2: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
backgroundImage2?.draw(in: CGRect.init(x: 0, y: 0, width: size.width, height: size.height))
frontImage?.draw(in: getAspectFillFrame(sizeImageView: size2, sizeImage: (frontImage?.size)!))
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
这里使用纵横填充创建背景图像,但问题是起始位置和完整的高度和宽度。
用非常简单的话说。它就像制作自定义框架并将它们与图像(纵横填充)合并以进行打印。
任何人都可以帮助我
感谢。
答案 0 :(得分:1)
在绘制完所有图像之前,尝试不要结束图像上下文(我还包括一些我工作的代码,稍微编辑一下)
class layeredImageView: UIImageView {
var imageBackground:UIImage!
var imageForeground:UIImage!
UIGraphicsBeginImageContextWithOptions(self.frame.size, false, UIScreen.main.scale)
self.image?.draw(in: self.frame)
imageBackground.draw(in: CGRect(<rect>)
imageForeground.draw(in: CGRect(<rect>)
self.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}