【iOS】iPhone截图并添加水印

+(UIImage *)screenForView:(UIView *)view
{
// UIGraphicsBeginImageContext(view.frame.size);
// CGContextRef context = UIGraphicsGetCurrentContext();
// [view.layer renderInContext:context];
// UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
// UIGraphicsEndImageContext();
//
// return theImage;
size_t width = view.frame.size.width;
size_t height = view.frame.size.height;
size_t bitsPerComponent = 8; //这个我不太懂,大概意思是表示一个颜色职的位数

size_t bytesPerRow = width * 4; //每一行的字节数,ARGB 每一个位数是8,也就是一个字节 ,每一个像索占4个字节

CGColorSpaceRef spaceRef = CGColorSpaceCreateDeviceRGB(); //这个命名空间和灰度化有关系

void * data = malloc(bytesPerRow * height); //文档上有说明

CGContextRef context = CGBitmapContextCreate(data, width, height, bitsPerComponent, bytesPerRow, spaceRef, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

if (context == NULL) {
NSLog(@"创建绘图环境失败");
}

//旋转画面

//先翻转画布 — 仿射距阵很让人纠结,之后我会写一篇关于仿射距阵的文章
CGContextTranslateCTM(context, width, 0);
CGContextScaleCTM(context, -1, 1);

CGContextTranslateCTM(context, width, height);
CGContextRotateCTM(context, radians(-180.0));

//到目前为卡,坐标旋转的和ios的坐标一至了

CGContextSaveGState(context);//保存当前的状态

CGContextClearRect(context, CGRectMake(0, 0, width, height));
// CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
// CGContextFillRect(context, CGRectMake(0, 0, width, height));
//CGContextClipToRect(context, CGRectMake(0, 0, width, height));

[[view layer] renderInContext:context]; //配送到这个context

//添加水印

//变化坐标,frame在这里没有用

CGContextTranslateCTM(context, 220, height-50-10);

UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, height-50, 100, 50)];
label.text = @"惟愿";
[label setShadowColor:[UIColor grayColor]];
[label setTextColor:[UIColor whiteColor]];
[label setBackgroundColor:[UIColor clearColor]];
[label setFont:[UIFont boldSystemFontOfSize:20]];
[label setTextAlignment:NSTextAlignmentCenter];
[[label layer] renderInContext:context];
[label release];

//添加水印2

CGContextTranslateCTM(context, 0, 40);

UILabel * label2 = [[UILabel alloc]initWithFrame:CGRectMake(0, height-50, 100, 10)];
label2.text = @"http:/onlywish.me";
[label2 setShadowColor:[UIColor grayColor]];
[label2 setTextColor:[UIColor whiteColor]];
[label2 setBackgroundColor:[UIColor clearColor]];
[label2 setFont:[UIFont boldSystemFontOfSize:12]];
[label2 setTextAlignment:NSTextAlignmentCenter];
[[label2 layer] renderInContext:context];
[label2 release];

CGImageRef imageRef = CGBitmapContextCreateImage(context);

UIImage * result = [UIImage imageWithCGImage:imageRef];

//释放内存
CGColorSpaceRelease(spaceRef);
CGImageRelease(imageRef);
CGContextRelease(context);
free(data);

return result;
}
时间: 2024-12-27 09:18:03

【iOS】iPhone截图并添加水印的相关文章

iOS/iphone开发如何为苹果开发者帐号APPID续费

原文地址:iOS/iphone开发如何为苹果开发者帐号APPID续费作者:陈双超_群雄 其实相当的简单,这篇内容是给财务看的,有的地方连我自己看了都感觉有点...但如果不详细,她又要为难我,所以我就当她0智商 1.     打开 https://developer.apple.com/account/overview.action 2.(如何查看到自己的证书哪天到期,就是具体日起,这个的话平时是看不到的只有在最后60天的时候会提醒你.) 3.4.5.6.7.为了避免财务输入麻烦或者她输入出错引起

【1】【IOS】 截图

1 UIGraphicsBeginImageContext(self.view.bounds.size);// 设置上下文 2 3 [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];4 5 UIImage *image=UIGraphicsGetImageFromCurrentImageContext();//从当前上下文中获取image 6 7 UIGraphicsEndImageContext();//关闭上下文

IOS: iPhone键盘通知与键盘定制

一.键盘通知 当文本View(如UITextField,UITextView,UIWebView内的输入框)进入编辑模式成为first responder时,系统会自动显示键盘.成为firstresponder可能由用户点击触发,也可向文本View发送becomeFirstResponder消息触发.当文本视图退出first responder时,键盘会消失.文本View退出first responder可能由用户点击键盘上的Done或Return键结束输入触发,也可向文本View发送resig

Unity3D IOS IPhone添加Admob的方法

原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140403119293/ 首先阅读官方文档https://developers.google.com/mobile-ads-sdk/docs/ 按步就班注册获取AdMob Publisher ID已及开发SDK包和DEMO工程,确保官方的demo工程能正确运行: 如果没法运行,再仔细阅读官方文档!! 为了省事,就直接在BannerExampleViewController上修改

iPhone截图后微信发送失败的解决方案

这个问题困扰我一年多. 问题描述如下: iphone截取屏幕后,通过自带的共享传给微信后,微信选择好友发送,微信提示发送异常或者发送失败. 全网搜索了一圈发现没有真正能解决问题的答案,都是什么重启,清空微信缓存什么的操作,没用! 困扰了一年多,今天终于回复了,回复方法如下: 微信设置—〉切换账号 再登陆一个新的账号,然后再走一遍截图/共享/发送给好友的过程,发送成功,然后切换到原账号,原账号即可恢复. 至于为什么会这样,我也不知道. ===============================

iOS iphone屏幕分析(岂止而大)

在写本文前,我必须介绍几点内容:第一点:屏幕上面显示的内容多少和屏幕的尺寸大小无关第二点:屏幕上面显示的内容多少和分辨率完全无关第三点:屏幕上面显示的内容多少和屏幕尺寸.屏幕分辨率.PPI等都是无关的 那到底什么才影响屏幕上面显示内容的多少呢?在苹果的iOS设备里面,那就是屏幕上Points(pt)点的数量,Point是一个绝对测量尺寸,一个Points可以表示多个像素,比如非视网膜上,1个Points就代表一个像素,但在视网膜屏幕上,1个Points就代表4个像素.也就是说3.5寸480*32

IOS iphone 4inch上应用没有全屏,上下有黑边

在编写IOS应用程序的过程中,我一直都是使用iPhone Retina(3.5-inch)模拟器测试的,一切显示正常,切图如下: 我在应用开发中,采用的是纯代码实现.公司提供了一部iPhone4s,我使用其测试一切显示正常. 问题出在,当我使用iPhone5和 iPhone5s真机测试时,发现我的应用在iPhone5和iPhone5s上没有铺满屏幕显示画面,而是在应用画面的上下各有一条黑色,截图如下: 检查问题步骤: 一.我开始仔细检查我的代码,发现 在整个工程中,没有一个地方在设置画面高度时候

IOS iphone 4inch上应用没有全屏,上下有黑边(转)

在编写IOS应用程序的过程中,我一直都是使用iPhone Retina(3.5-inch)模拟器测试的,一切显示正常,切图如下: 我在应用开发中,采用的是纯代码实现.公司提供了一部iPhone4s,我使用其测试一切显示正常. 问题出在,当我使用iPhone5和 iPhone5s真机测试时,发现我的应用在iPhone5和iPhone5s上没有铺满屏幕显示画面,而是在应用画面的上下各有一条黑色,截图如下: 检查问题步骤: 一.我开始仔细检查我的代码,发现 在整个工程中,没有一个地方在设置画面高度时候

iOS(iPhone,iPad))开发(Objective-C)开发库常用库索引

http://www.code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 http://www.cocoacontrols.com/ 英文版本的lib收集 http://www.objclibs.com/ 精品lib的收集网站 http://www.ityran.com/forum-61-1.html 泰然代码仓库 ---------------------- emoji ---------------------- http://www.easyapns.c