介绍一个图像里面嵌入图像、文字或者合并两张图像的思路。首先我们需要产生一个临时的画布,为其设置好大小,然后将目标图像、文字和原图像一起加入到这张画布上面。
在这里用二维码和条形码来举例
在条形码下方插入文字
假设我们已经有一张条形码的图片barCodeImage,并且打算将其转换为带文字的条形码图片:
CGSize size = CGSizeMake(barcodeImage.size.width,barcodeImage.size.height + 10); //比原图高一些以放置文字
UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//初始化画布
[barCodeImage drawAtPoint:CGPointZero];//把条形码图片添加到画布中
CGContextRef context = UIGraphicsGetCurrentContext();//画布上下文
CGContextDrawPath(context,kCGPathStroke);
NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle alloc]init];
textStyle.lineBreakeMode = NSLineBreakeModeWordWrapping;
textStyle.alignment = NStextAlignmentCenter;
NSString *text = @"990873074";
[text drawInRect:CGRectMake(0,size.height - 15,size.width,40),withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSBacgroundColorAttributeName:[UIColor clearColor],NSParagraphStyleAttributeName:textStyle}];//绘制文字
UIImage *image = UIGraphicsGetImageFromCurrentContext();//将画布映射到图片对象
UIGraphicsEndImageContext();//关闭画布
barCodeImage = image;//赋值
在二维码中心加入logo
和在条形码中加入文本类似,我们需要将二维码和logo图片绘制到画布中并将画布转换为新的图片对象。
假设我们有一张二维码图片对象QRCodeImage和一张logo图片对象logoImage:
CGSize size = CGSizeMake(QRCodeImage.size.width,QRCodeImage.size.width);
UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//初始化画布
[barCodeImage drawAtPoint:CGPointZero];//把条形码图片添加到画布中
CGContextRef context = UIGraphicsGetCurrentContext();//画布上下文
CGContextDrawPath(context,kCGPathStroke);
[QRCodeImage drawInRect:CGRectMake(0,0,size.width,size.width)];
[logoImage drawInRect:CGRectMake(size.width / 2 - 20,size.width / 2 - 20, 40, 40)];
UIImage *image = UIGraphicsGetImageFromCurrentContext();//将画布映射到图片对象
UIGraphicsEndImageContext();//关闭画布
QRCodeImage = image;//赋值