文档章节

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

Youth_关旋
 Youth_关旋
发布于 2016/07/28 11:23
字数 432
阅读 10
收藏 0
点赞 0
评论 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--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
Unity与IOS交互,调用IOS系统相机和相册

前面两篇总结了一下unity与android的简单交互和调用安卓系统相机和相册,比较蛋疼的是,后来发现不同的测试机上会有不同的bug。。。下阶段要一个一个的解决一下 今天总结一下与IOS的交互。这...

qq_32587659
05/16
0
0
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
0
0
react native之第三方库的相册相机(可裁剪可压缩等)等操作

第三方库的原生相册相机操作。第三方的react-native-image-crop-picker的功能更为完整易用(可多选、压缩、裁剪等)。 https://github.com/ivpusic/react-native-image-crop-picker //GitHub...

Chason-洪
2017/10/18
0
0
再看知名应用背后的第三方开源项目

知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的...

hejunbinlan
2015/08/18
0
0
GPU vs CPU in iOS

一直以来,我们做产品的时候并没有特别的去考虑CPU/GPU的使用,最近为了提升可视化功能的性能,发现合理使用GPU也是一个可以好好研究的部分,这里总结一下一些有用的信息。 中央处理器 CPU ...

雨_树
07/10
0
0
关于“发送原图”功能问题的记录

本文主要记录一个bug从发现、定位到延期解决的过程。文末添加了已踩过的坑 近期在做“发送原图”功能的时候,遇到一个bug:在Android、Windows、Mac 客户端发送原图,iOS客户端接收,保存原图...

si1ence
2017/12/14
0
0
Android屏幕分辨率占有率分析及应用

Android屏幕分辨率各种各样,碎片化严重,开发者苦不堪言,转身看看iOS开发同学,只要适配2个尺寸的屏幕就好了,= =! 但我们总是能克服的对不,假如我们现在有这么一个需求: 我们将满屏显示...

正经点
2013/06/03
0
0
《视频直播技术详解》系列之一:视频采集和处理

直播中的各个环节: 1.采集 采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。P...

ljianbing
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CentoOS6.6安装netcat

CentOS下安装netcat 使用zookeeper过程中,需要监控集群状态。在使用四字命令时(echo conf | nc localhost 2181),报出如下错误:-bash: netcat: command not found。 我的系统是CentOS 6....

ghou-靠墙哭
8分钟前
0
0
es6之解构赋值巧用

ES6 允许按照一定模式,从数组、对象等中提取值,对变量进行赋值,这被称为解构赋值。 如何进行解构赋值我这里就不赘述,本篇文章主要是将解构赋值的巧妙使用之处。 1、交互变量的值 常用交互...

秋季长青
13分钟前
0
0
Elasitcsearch High Level Rest Client学习笔记(三)批量api

Bulk Request BulkRequest可以在一起从请求执行批量添加、更新和删除,至少需要添加一个操作 BulkRequest request = new BulkRequest(); //创建BulkRequestrequest.add(new IndexRequest("...

木子SMZ
16分钟前
0
0
mybatis-dynamic sql

OGNL expressions if 判断是否存在值 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{tit......

writeademo
23分钟前
0
0
社交系统ThinkSNS+ V1.8.3更新播报

     研发发布版本号:1.8.3   本次版本于2018年7月16日发布   本次发布类型:新增功能、细节调整与优化   社交系统ThinkSNSPlus更新体验:请于官网下载/安装最新版或联系QQ35159...

ThinkSNS账号
27分钟前
0
0
教育思考:选择编程是一场父母和孩子的和解[图]

教育思考:选择编程是一场父母和孩子的和解[图]: 之前有个很热的段子是这样讲的:深夜十点的时候,某小区一女子大声喊叫“什么关系?啊?!到底什么关系?你说!”最后发现原来是一位妈妈陪...

原创小博客
28分钟前
0
0
X64汇编之指令格式解析

最近由于项目组内要做特征码搜索的东西,便于去Hook一些未导出函数,你懂得...于是就闲着学习了一下x86/x64的汇编指令格式。x86的汇编指令格式请参照http://bbs.pediy.com/showthread.php?t...

simpower
30分钟前
0
0
rust 语法概要(只适合不熟悉时快速查阅使用,不适合理解其精髓。未完待续)

注意:本内容只适合快查,不适合理解精髓。精髓请研读 https://kaisery.github.io/trpl-zh-cn/foreword.html 基本数据类型 i8,i16,i32,i64,i128 u8,u16,u32,u64,u128 f32,f64 char bool:true...

捍卫机密
33分钟前
0
0
JS中严格模式和非严格模式

1,使用 严格模式的使用很简单,只有在代码首部加入字符串 "use strict"。必须在首部即首部指其前面没有任何有效js代码除注释,否则无效 2.注意事项 (1)不使用var声明变量严格模式中将不通...

AndyZhouX
34分钟前
0
0
Nginx配置error_page 404 500等自定义的错误页面

Nginx 做web server时, 开发中发现有时候的网站代码有错误,我们需要跳转到一个指定内容的错误页面: 1. 在nginx.conf配置文件上加上一句: fastcgi_intercept_errors on; 2. 服务中加上: er...

MichaelShu
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部