iOS开发Quarz2D 九:图片加水印
#import "ViewController.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV; @end @implementation ViewController
/**
* 注意:1:位图也就是图片的上下文,必须手动去开启,手动去关闭,而view的图形上下文,在drawRect方法中系统已经自动生成,由系统自动去管理图形上下文。2:[image drawAtPoint:CGPointZero];drawAtPoint,图片有多大,就绘制多大,drawRect,外界的父控件有多大,图片就会填充整个父控件
*/
- (void)viewDidLoad {
[super viewDidLoad]; //0.加载图片
UIImage *image = [UIImage imageNamed:@"阿狸头像"];
//1.开启一个跟图片原始大小的上下文
//opaque:不透明度,参数传0,默认根据屏幕的分辨率去设置具体的数值
UIGraphicsBeginImageContextWithOptions(image.size, NO, );
//2.把图片绘制到上下文当中
[image drawAtPoint:CGPointZero];
//3.把文字绘制到上下文当中
NSString *str = @"小码哥";
[str drawAtPoint:CGPointMake(, ) withAttributes:nil];
//4.从上下文当中生成一张图片.(把上下文当中绘制的所有内容,生成一张图片)
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//5.关闭上下文.
UIGraphicsEndImageContext(); self.imageV.image = newImage; } @end
给图片水印的目的:
告诉别人图片的来源.
防止别人盗用图片.打广告.
添加水印它最终是生成了一个新的图片.
生成图片要用到了图片上下文.不需要再去自定义View,
之前一直在自定义View,是因为要拿跟View相关联的上下文.
跟View相关联的上下文是系统自动帮我们创建的,所以不需要我们自己手动创建,
但是图片上下文需要我们自己去手动创建.还需要我们自己手动去关闭.
实现水印效果的思路:
开启一个和原始图片一样的图片上下文.
把原始图片先绘制到图片上下文.
再把要添加的水印(文字,logo)等绘制到图片上下文.
最后从上下文中取出一张图片.
关闭图片上下文.
1.如何开启一个图片上下文?
size:开启多大的上文
opaque:不透明度
scale:缩放上下文.
UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
2.如何从图片上下文当中生成一张图片?
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
3.如何关闭上下文?
UIGraphicsEndImageContext();
iOS开发Quarz2D 九:图片加水印的更多相关文章
- iOS图片加水印效果的实现并保存至相冊
图片加水印效果的实现并保存至相冊 实现效果如图: project下载:githubproject下载链接 代码: - (void)viewDidLoad { [super viewDidLoad]; ...
- iOS开发UI篇—懒加载
iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- iOS 解决LaunchScreen中图片加载黑屏问题
iOS 解决LaunchScreen中图片加载黑屏问题 原文: http://blog.csdn.net/chengkaizone/article/details/50478045 iOS 解决Lau ...
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...
- thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印
今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...
- php 分享两种给图片加水印的方法
本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...
- Java图片处理(二)图片加水印
图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...
随机推荐
- JNI/NDK开发指南(九)——JNI调用性能測试及优化
转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接 ...
- Oracle Sqlplus中上下键出现^[[A乱码问题
安装rlwrap 下载:http://utopia.knoware.nl/~hlub/uck/rlwrap/ 或者 百度云盘:http://pan.baidu.com/s/1ntM8YXr 须要先安 ...
- MFC只允许程序单开
很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...
- JavaScript学习总结(4)——JavaScript数组
JavaScript中的Array对象就是数组,首先是一个动态数组,无需预先制定大小,而且是一个像Java中数组.ArrayList.Hashtable等的超强综合体. 一.数组的声明 常规方式声明: ...
- 洛谷 P1327 数列排序
P1327 数列排序 题目描述 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 输入输出格式 输入格式: ...
- 1.JPA概要
转自:https://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html JPA定义了Java ORM及实体操作API的标准.本文摘录了J ...
- 1.2 Use Cases中 Messaging官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 下面是一些关于Apache kafka 流行的使用场景.这些领域的概述,可查看博客文 ...
- C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)
在主线程定要禁止使用waitforsingleobject(),原因是会阻塞主线程的消息循环,所以必须使用另一种 MsgWaitForMultipleObjects,即可以让消息通过,下面就是一个基于 ...
- 使用 STL 辅助解决算法问题
不要重复制造轮子,而且你造的轮子未必比得上别人的: <numeric>⇒ accumulate,累积容器中区间的和,可以指定初值: 为什么 STL 中的容器和算法一定关于区间的操作一定是左 ...
- Java核心技术 卷Ⅰ 基础知识(3)
第五章 继承 继承已存在的类就是复用这些类的方法和域.反射是指在程序运行期间发现更多的类及其属性的能力. . 反射 . 使用反射编写泛型数组代码 继承设计的技巧