Chinaunix首页 | 论坛 | 博客
  • 博客访问: 894681
  • 博文数量: 322
  • 博客积分: 6688
  • 博客等级: 准将
  • 技术积分: 3626
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-19 11:26
文章分类

全部博文(322)

文章存档

2013年(5)

2012年(66)

2011年(87)

2010年(164)

分类: LINUX

2012-05-07 18:19:48

@interface UIImage(UIImageScale)

-(UIImage*)getSubImage:(CGRect)rect;

-(UIImage*)scaleToSize:(CGSize)size;

@end


@implementation UIImage(UIImageScale)


//截取部分图像

-(UIImage*)getSubImage:(CGRect)rect

{

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

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

    UIGraphicsBeginImageContext(smallBounds.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextDrawImage(context, smallBounds, subImageRef);

    UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];

    UIGraphicsEndImageContext();

    return smallImage;

}


//等比例缩放

-(UIImage*)scaleToSize:(CGSize)size 

{

CGFloat width = CGImageGetWidth(self.CGImage);

    CGFloat height = CGImageGetHeight(self.CGImage);

float verticalRadio = size.height*1.0/height; 

float horizontalRadio = size.width*1.0/width;

float radio = 1;

if(verticalRadio>1 && horizontalRadio>1)

{

radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;

}

else

{

radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;

}

width = width*radio;

height = height*radio;

int xPos = (size.width - width)/2;

int yPos = (size.height-height)/2;

// 创建一个bitmapcontext  

    // 并把它设置成为当前正在使用的context  

    UIGraphicsBeginImageContext(size);  

    // 绘制改变大小的图片  

    [self drawInRect:CGRectMake(xPos, yPos, width, height)];  

    // 从当前context中创建一个改变大小后的图片  

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  

    // 使当前的context出堆栈  

    UIGraphicsEndImageContext();  

    // 返回新的改变大小后的图片  

    return scaledImage;

}

@end

阅读(1157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~