iOS开发技巧之:UIImage的剪切,尺寸缩小、压缩、添加水印

来源:互联网 发布:单片机串口通讯详解 编辑:程序博客网 时间:2024/05/16 10:56

- (void)viewDidLoad {

    [super viewDidLoad];

    

    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(0203030)];

    UIImageView *imag = [[UIImageView allocinitWithImage:image01];

    imag.frame = CGRectMake(10100, width,height);

    [self.view addSubview:imag];

    

    //剪切图片

    UIImage *image1 =[self cutImage:image withRect:CGRectMake(102060100)];//

    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 allocinitWithImage:image11];

    imag1.frame = CGRectMake(10210, 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 allocinitWithImage:image22];

    imag2.frame = CGRectMake(10300, 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(00, 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 allocinit];

    [dateFormatter setDateFormat:@"yyyyMMddHHSSS"];

    NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];

    NSString *dateStr = [NSString stringWithFormat:@"%@.jpg",currentDateStr];

    

    NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:dateStr];

    if ([[NSFileManager defaultManagerfileExistsAtPath:path]) {

        NSError *error;

        [[NSFileManager defaultManagerremoveItemAtPath: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 redColorset];

    [img drawInRect:CGRectMake(00, 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(00, w, h)];

    [newImage drawInRect:rect];

    

    UIImage *aimg = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

    return aimg;

}


效果图:

    
1 0
原创粉丝点击