[转载]UIImage的剪切,尺寸缩小、压缩、添加水印
2015-10-31 09:41
344 查看
原文地址:http://blog.csdn.net/u012890196/article/details/42123263
UIImage *image = [UIImage imageNamed:@"portrait01.png"]; CGFloat width = image.size.width; CGFloat height = image.size.height; //加图片水印 UIImage *image01 = [self addToImage:image image:image withRect:CGRectMake(0, 20, 30, 30)]; UIImageView *imag = [[UIImageView alloc] initWithImage:image01]; imag.frame = CGRectMake(10, 100, width,height); [self.view addSubview:imag]; //剪切图片 UIImage *image1 =[self cutImage:image withRect:CGRectMake(10, 20, 60, 100)];// int w = image1.size.width; int h = image1.size.height; UIImage *image11 = [self addText:image1 text:@"剪切" withRect:CGRectMake(10,(h-30)/2, w, 30) ]; UIImageView *imag1 = [[UIImageView alloc] initWithImage:image11]; imag1.frame = CGRectMake(10, 210, image1.size.width,image1.size.height); [self.view addSubview:imag1]; //缩小图片 UIImage *image2 = [self scaleToSize:image size:CGSizeMake(image1.size.width, image1.size.height)]; UIImage *image22 = [self addText:image2 text:@"压缩" withRect:CGRectMake(10,(h-30)/2, w, 30) ]; UIImageView *imag2 = [[UIImageView alloc] initWithImage:image22]; imag2.frame = CGRectMake(10, 300, image2.size.width,image2.size.height); [self.view addSubview:imag2]; //压缩图片大小并保存 [self zipImageData:image]; } //压缩图片 - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{ // 设置成为当前正在使用的context UIGraphicsBeginImageContext(size); // 绘制改变大小的图片 [img drawInRect:CGRectMake(0, 0, size.width, size.height)]; // 从当前context中创建一个改变大小后的图片 UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈 UIGraphicsEndImageContext(); // 返回新的改变大小后的图片 return scaledImage; } //截图图片 - (UIImage *)cutImage:(UIImage *)image withRect:(CGRect )rect { CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect); UIImage * img = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); return img; } //压缩图片大小 - (void)zipImageData:(UIImage *)image { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMddHHSSS"]; NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]]; NSString *dateStr = [NSString stringWithFormat:@"%@.jpg",currentDateStr]; NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:dateStr]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { NSError *error; [[NSFileManager defaultManager] removeItemAtPath:path error:&error]; } NSData *imgData = UIImageJPEGRepresentation(image, 1); if([imgData writeToFile:path atomically:YES]) { NSLog(@"saveSuccess"); } } //加文字水印 - (UIImage *) addText:(UIImage *)img text:(NSString *)mark withRect:(CGRect)rect { int w = img.size.width; int h = img.size.height; UIGraphicsBeginImageContext(img.size); [[UIColor redColor] set]; [img drawInRect:CGRectMake(0, 0, w, h)]; if([[[UIDevice currentDevice]systemName]floatValue] >= 7.0) { NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:20.0f], NSFontAttributeName,[UIColor blueColor] ,NSForegroundColorAttributeName,nil]; [mark drawInRect:rect withAttributes:dic]; } else { //该方法在7.0及其以后都废弃了 [mark drawInRect:rect withFont:[UIFont systemFontOfSize:20]]; } UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return aimg; } //加图片水印 - (UIImage *) addToImage:(UIImage *)img image:(UIImage *)newImage withRect:(CGRect)rect { int w = img.size.width; int h = img.size.height; UIGraphicsBeginImageContext(img.size); [img drawInRect:CGRectMake(0, 0, w, h)]; [newImage drawInRect:rect]; UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return aimg; }
相关文章推荐
- UISearchBar 和 UISearchDisplayController 没有在UITableView 的headerView 导致searchResultsTableView的frame出问题
- 【FastDev4Android框架开发】AndroidAnnnotations注入框架使用之第三方框架集成RoboGuice(十三)
- 50. Pow(x, n) (INT; Divide-and-Conquer)
- ValueError: Expecting property name: line 1 column 1 (char 1)
- CodeForces 591A Wizards' Duel
- ui选型
- Arduino UNO仿真开发环境设置和仿真运行
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间求和+点修改+区间取模
- IOS开发笔记30-UITableView(1)
- 报错-Unknown class in Interface Builder file
- UIScrollView语法用法样例
- 贪心-- HDU - 4296 Buildings
- UITextField垂直居中对齐
- leetcode笔记:Unique Paths II
- 硬盘分区4 BIOS与UEFI
- UITableViewCell 的单元格重用机制
- UIGestureRecognizer手势
- UITabBarControloler 的简单使用
- UIAlterController 的使用
- UI中自定制cell--3