您的位置:首页 > 产品设计 > UI/UE

[转载]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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: