设为首页 加入收藏

TOP

iOS开发教程:为图片添加中文水印
2014-11-24 07:15:03 来源: 作者: 【 】 浏览:0
Tags:iOS 开发 教程 图片 添加 中文 水印

随着Iphone、Ipad的日渐流行,IOS开发早已深入人心,很多开发者开始投入IOS开发。IOS开发或许将在国内掀起一股热潮,对于热衷于各种新技术的我,显然也忍不住想要看看IOS开发到底为何物,看看Objective-C到底神奇在哪里,Cocoa&Cocoa Touch是否真的如此强大。


于是,不久前我也开始涉足到IOS开发的热浪之中。了解了一些基础知识,譬如:OC语法格式、事件模型、窗口、视图、导航等等,今天突然想到了一个有趣的东西,为图片添加个性化的水印,这个水印也许是一个网站的logo,也许是一个公仔,也许是你精心设计的带有某种寓意的图标。所以,我开始查找资料,尝试做起demo来了,好了废话不多说,先看一个效果图。



看似简单,其实不然。下面我就跟大家分享下我做这个demo中遇到的一些坑,相信对于和我一样的IOS开发初学者一定会有帮助。


首先,我最初采用的一种方式,是使用 CGBitmapContextCreate 创建 context ,然后使用 CGContextSelectFont 设置字体和字号,最后使用 CGContextShowTextAtPoint 将水印合成到上下文,再调用 CGBitmapContextCreateImage(context) 生成新的图片。这一切看似顺理成章,最终效果也确实实现了,但是当我输入中文的时候,问题出现了,不用多说大家应该已经才到了,令人头痛的乱码出现了。于是我开始改编码,改字体,各种改,最终还是无果。无奈又开始翻查各种资料,最终让我发现原来 CGContextShowTextAtPoint 方法本就不支持中文输出。至此,本以为已经大功告成,却不得不从头再来!


既然上面的方法已经不能得到我想要的结果,我也只好另寻他法。不得不说如今的互联网真的非常强大,很快我就搜索到了另外的实现方式,于是我又开始动起手来。这次的实现方式是:首先使用 UIGraphicsBeginImageContext(CGSize) 创建图片上下文,然后:


[UIImage drawInRect:CGRect];


绘制主图片,接着:


[NSString drawInRect:CGRect withFont:UIFont];


绘制水印文字,在这里还可以使用:


[[UIColor redColor] set];


设置水印文字 颜色,如果想绘制图片水印,这里改用前面绘制主图的方式有效。接下来使用:


UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


生成新图片,关闭上下文。皇天不负有心人,这次终于一切正常了。下面贴一下主要代码:


- (UIImage *) addText:(UIImage *)img text:(NSString *)mark {
int w = img.size.width;
int h = img.size.height;
UIGraphicsBeginImageContext(img.size);
[[UIColor redColor] set];
[img drawInRect:CGRectMake(0, 0, w, h)];
[mark drawInRect:CGRectMake(10, 55, 130, 80) withFont:[UIFont systemFontOfSize:18]];
UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return aimg;


}


好了,本文到此先告一段落,欢迎大家多多评论,多多交流!





】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇iOS开发入门教程 下一篇Hadoop之测试KMeans

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)