文档章节

ios 图片水印 图片裁剪和屏幕截图

Youth_关旋
 Youth_关旋
发布于 2016/07/28 11:23
字数 432
阅读 12
收藏 0

iOS-图片水印,图片裁剪和屏幕截图

 

ios 图片水印 图片裁剪和屏幕截图

一.图片水印

    1.创建个UIImageView
        @property (weak, nonatomic) IBOutlet UIImageView *neImage;

    2.创建个方法实现水印功能
        - (void)viewDidLoad {
            [super viewDidLoad];

            UIImage *bgImage = [UIImage imageNamed:@""];

            //创建一个位图上下文
            UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0);

            //将背景图片画入位图中
            [bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)];

            //将水印Logo画入背景图中
            UIImage *waterIma = [UIImage imageNamed:@""];
            [waterIma drawInRect:CGRectMake(bgImage.size.width - 40 - 5, bgImage.size.height - 40 - 5, 40, 40)];

            //取得位图上下文中创建的新的图片
            UIImage *newimage = UIGraphicsGetImageFromCurrentImageContext();

            //结束上下文
            UIGraphicsEndImageContext();    

            //在创建的ImageView上显示出新图片
            self.neImage.image = newimage;

            //压缩新照片为PNG格式的二进制数据
            NSData *data = UIImagePNGRepresentation(newimage);

            //将图片写入到手机存储中
            NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];
            [data writeToFile:path atomically:YES];

    }

二.图片裁剪

    //1.加载原图
        UIImage *oldImage = [UIImage imageNamed:@"me"];

        //2.获取位图上下文
        CGFloat bigCic = oldImage.size.width + 2 * 2;
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(bigCic, bigCic), NO, 0.0);

        //3.画大圆
        [[UIColor whiteColor] set];
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextAddArc(ctx, bigCic * 0.5, bigCic * 0.5, bigCic * 0.5, 0, M_PI * 2, 0);
        CGContextFillPath(ctx);

        //4.画小圆
        CGFloat smallCic = oldImage.size.width * 0.5;
        CGContextAddArc(ctx, bigCic * 0.5 , bigCic * 0.5, smallCic, 0, M_PI * 2, 0);
        CGContextClip(ctx);

        //5.画图
        [oldImage drawInRect:CGRectMake(2, 2, oldImage.size.width, oldImage.size.height)];

        //6.获取新图
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

        //7.结束上下文
        UIGraphicsEndImageContext();

        //8.显示新图
        self.IconView.image = newImage;

        //9.写入到手机存储
        NSData *data = UIImagePNGRepresentation(newImage);
        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"newClip.png"];
        [data writeToFile:path atomically:YES];

三,屏幕截图

 //1.开启位图上下文
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0);

//2.渲染截图
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

//3.获取新图
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

//4.写入到手机存储
NSData *data = UIImagePNGRepresentation(newImage);
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"newClip.png"];
[data writeToFile:path atomically:YES];

//5.关闭上下文
UIGraphicsEndImageContext();

本文转载自:http://blog.cocoachina.com/article/34645#st-1

共有 人打赏支持
Youth_关旋
粉丝 2
博文 70
码字总数 23376
作品 0
枣庄
私信 提问
拍照扫描功能开发(iOS、Android平台,可参照扫描全能王拍照扫描效果)

具体要求: 图片多边形裁剪、缩放以及灰化(iOS、Android 拍照扫描功能开发) 参考app: 扫描全能王 需要拍照后对图片进行多边形裁剪功能、移动裁剪区域时需要显示放大镜功能,最后对裁剪的图...

iOS独立开发者
2016/11/15
3
0
iOS--OC--图片拉伸和尺寸变换,图片简单处理

图片拉伸和尺寸变换 图片拉伸 : - (UIImage )stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight; 一般 leftCapWidth = imageWidth .5f, top......

丶雨凡
2015/03/26
0
0
iOS开发 — Quartz 2D知识点应用 (制作了一个Demo,源代码)

欢迎关注我的新浪微博: @立里童立里 通过Quartz 2D知识点制作了一个移动镜头的小Demo 实现的功能: 1. 移动镜头,如下图所示: 2. 调节镜头大小,如下图所示: 3. 调节速率,如图所示:(你...

立里童立里
2014/10/10
0
0
疯狂ios讲义之美化iOS应用

如果点击模拟器下方的Home按键或按下command+Shift+H快捷键(Retina屏幕的模拟器没有提供Home按键,则只能通过快捷键操作),模拟器返回应用程序列表,此时将可以看到刚刚开发的应用程序,但...

博文视点
2014/01/21
802
2
2016-9-12 APP头像裁剪问题修复(by:陈经理)

头像裁剪一个问题的修复,之前无论IOS还是android,当图片过大的时候,部分图片裁剪位置会不正确。这是因为 plus.zip.compressImage不能同时压缩和裁剪图片,当压缩还未完成时已同时执行裁剪...

Meaty
2016/09/12
1
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部