UIImage添加水印(Logo+文字)
2017-01-14 18:08
295 查看
写在前面
添加水印是经常遇到的需求了,也算是图像数字处理比较容易的一个环节,网上能搜出好几种解决方案,但作为新手的我还是折腾了好长时间。简单介绍
没有什么逻辑,就是把你所需要用到的素材全都渲染到contex中,最后再作为一个整体取出来。// 创建一个bitmap的context UIGraphicsBeginImageContext(); // 渲染背景图 // 渲染素材logo+文字 // 用的是同一个方法 drawInRect: . . . // 取出UIImage UIImage *imageNew = UIGraphicsGetImageFromCurrentImageContext(); //一些释放操作 UIGraphicsEndImageContext();
应用
由于是UIImage的一些处理,这种需求最合适写进category里面- (UIImage *)imageWater1:(UIImage *)imageLogo waterString:(NSString *)waterString { NSUInteger inputWidth = self.size.width; // 创建一个bitmap的context UIGraphicsBeginImageContext(self.size); // 开始图片渲染 [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; // logo渲染 CGFloat ghostImageAspectRatio = imageLogo.size.width / imageLogo.size.height; NSInteger targetGhostWidth = inputWidth * 0.3; [imageLogo drawInRect:CGRectMake(0, 0, targetGhostWidth, targetGhostWidth/ghostImageAspectRatio)]; // 渲染文字 NSUInteger wordHigh = 120; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:100], NSForegroundColorAttributeName:[UIColor whiteColor], NSParagraphStyleAttributeName:paragraphStyle}; [waterString drawInRect:CGRectMake(targetGhostWidth, 0, self.size.width*0.6, wordHigh) withAttributes:dic]; [@"RNO:0000023034001230" drawInRect:CGRectMake(targetGhostWidth, wordHigh*1, self.size.width*0.6, wordHigh) withAttributes:dic]; [@"GPS:27.34223132,4533.2313324" drawInRect:CGRectMake(targetGhostWidth, wordHigh*2, self.size.width*0.6, wordHigh) withAttributes:dic]; [@"地址:需要您的同意,才能访问相册" drawInRect:CGRectMake(targetGhostWidth, wordHigh*3, self.size.width*0.6, wordHigh) withAttributes:dic]; // UIImage UIImage *imageNew = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return imageNew; }
这样写是OK的,刚开始在渲染logo是这样写的
[imageLogo drawInRect:CGRectMake(0, 0, imageLogo.size.width, imageLogo.size.height)];
渲染出来的 图片特小,因为是位图(bitmap)的关系吧,
要想用logo实际大小可以这样
CGImageRef logoCGImg = [imageLogo CGImage]; CGFloat w = CGImageGetWidth(logoCGImg); CGFloat h = CGImageGetHeight(logoCGImg); [imageLogo drawInRect:CGRectMake(0, 0, w, h)];
相关文章推荐
- DotNet为图片添加水印(LOGO及文字)
- ASP.NET 上传图片添加文字、Logo水印
- ASP.NET 上传图片添加文字、Logo水印
- 添加水印logo和文字 iOS
- 添加水印(文字and图片)
- Swift 图片添加文字水印
- Java生成二维码可添加logo和文字功能
- jQuery为控件添加水印文字
- php面向对象与面向过程两种方法给图片添加文字水印
- 给word文档添加水印(图片、文字),我修改过了,可直接使用
- [转]jQuery为控件添加水印文字
- java添加透明的图片和文字水印
- 用jsp给图片添加文字(图片水印)
- JS添加文字水印
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 如何给 textview添加类似于textfield的水印文字
- 给位图文件添加文字水印
- asp .net 为图片添加文字水印(内包含有加图片水印的方法) .
- IOS图片上添加水印文字(微博上图片上得水印文字)
- 给位图文件添加文字水印