40.利用bitmap上下文生成图片 生成水印
2015-06-01 14:18
239 查看
1.bitmap上下文:生成图片的上下文,不再是在layer上的上下文: - (void)viewDidLoad { [super viewDidLoad]; // 0.创建一个bitmap的上文 //CGBitmapContextCreate /* size :指定将来创建出来的bitmap的大小 opaque : YES:背景不透明 NO:背景透明 scale: 缩放比例 创建出来的bitmap就对应一个UIImage */ UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), NO , 0); // 1.获取bitmap上下文,刚刚创建的上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.绘图 CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100)); // 3.渲染 CGContextStrokePath(ctx); // 4.获取生成的图片 UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // 5.显示生成的图片到imageview self.iv.image = image; // 6.保存绘制好的图片到文件中 // 先将图片转换为二进制数据, 然后再将图片写到文件中 // UIImageJPEGRepresentation(image, 1) NSData *data = UIImagePNGRepresentation(image); [data writeToFile:@"/Users/apple/Desktop/abc.png" atomically:YES]; }
- (void)test { // 0. 加载背景图片 UIImage *image = [UIImage imageNamed:@"psb"]; // 1.创建bitmap上下文 // 执行完这一行在内存中就相遇创建了一个UIImage UIGraphicsBeginImageContextWithOptions(image.size, NO, 0); // 2.绘图图片 // 2.1绘制背景图片 [image drawAtPoint:CGPointMake(0, 0)]; // 2.2绘制水印 UIImage *logImage = [UIImage imageNamed:@"logo1"]; CGFloat margin = 10; CGFloat logY = margin; CGFloat logX = image.size.width - margin - logImage.size.width; [logImage drawAtPoint:CGPointMake(logX, logY)]; // 2.3绘制文字水印 NSString *str = @"黑马程序员"; [str drawAtPoint:CGPointMake(150, 50) withAttributes:nil]; // 3.获得bitmap上下文中绘制号的图片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 4.将图片写到文件中 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"aaa.png"]; NSLog(@"%@", path); NSData *data = UIImagePNGRepresentation(newImage); [data writeToFile:path atomically:YES]; } .
相关文章推荐
- zookeeper Paxos算法之旅
- SVN服务器搭建和使用(三)
- 移动端文字字号解决方案
- 算法导论 13-3 AVL平衡二叉树
- MYSQL经常使用命令列表
- SVN服务器搭建和使用(二)
- sql优化
- CF 303C——Minimum Modular——————【剪枝】
- 合理运用PowerShell中的异常处理类型
- Unity Shader Billboard
- 查询、释放数据库锁、 约束
- 你应该关注的十个智能硬件中文网站
- sublime 查看当前文档编码
- cudaStreamSynchronize vs cudaDeviceSynchronize vs cudaThreadSynchronize
- 工厂模式代码示例(一)
- Cocos2d-x CCProgressTimer
- 项目开发过程前端开发中遇见的问题总结
- oracle job
- 移动Web开发的bug及解决方案
- C++ 与 php 的交互 之----- C++ 获取 网页文字内容,获取 php 的 echo 值。