码迷,mamicode.com
首页 > 其他好文 > 详细

图片处理

时间:2016-08-17 11:50:18      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

1.图片等比压缩

- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  

      // 创建一个bitmap的context    

    // 并把它设置成为当前正在使用的context    
    UIGraphicsBeginImageContext(size);    
    // 绘制改变大小的图片    
    [img drawInRect:CGRectMake(0,0, size.width, size.height)];    
    // 从当前context中创建一个改变大小后的图片    
    UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext();    
    // 使当前的context出堆栈    
    UIGraphicsEndImageContext();    
    //返回新的改变大小后的图片    
    return scaledImage;    
}

2.图片大小压缩

+(NSData *)imageData:(UIImage *)myimage{

    NSData *data=UIImageJPEGRepresentation(myimage, 1.0);

    if (data.length>100*1024) {

        data = UIImageJPEGRepresentation(myimage, data.length/(300.0*1024));

    }

    return data;

}

3.截取部分图像

CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);

CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));

UIGraphicsBeginImageContext(smallBounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, smallBounds, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();

return smallImage;

 4.通过线条

- (void)drawRect:(CGRect)rect{ 
     //画三角形,以便以后指定可以显示图片的范围
     //获取图形上下文
     CGContextRef ctx=UIGraphicsGetCurrentContext();
     //CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 50, 50));
     CGContextMoveToPoint(ctx, 100, 100);
     CGContextAddLineToPoint(ctx, 60, 150);
      CGContextAddLineToPoint(ctx, 140, 150);
     CGContextClosePath(ctx);
     //注意:指定范围(也就是指定剪切的方法一定要在绘制范围之前进行调用)
     //指定上下文中可以显示内容的范围就是圆的范围
     CGContextClip(ctx);
     UIImage *image2=[UIImage imageNamed:@"me"];
     [image2 drawAtPoint:CGPointMake(100, 100)];
}


图片处理

标签:

原文地址:http://www.cnblogs.com/liuluoxing/p/5779299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!