/********************************************************************
文件名称 : scaleToSize.h
作 者 :
创建时间 : 2011-1-13
文件描述 : image缩放
版权声明 : Copyright (C) 2010-2012
修改历史 : 2011-1-13 1.00 初始版本
调用 :
文件名称 : scaleToSize.h
作 者 :
创建时间 : 2011-1-13
文件描述 : image缩放
版权声明 : Copyright (C) 2010-2012
修改历史 : 2011-1-13 1.00 初始版本
调用 :
*********************************************************************/
-(UIImage*)scaleToSize:(CGSize)size;
/******************************************************************************
函数名称 : scaleToSize
函数描述 : image缩放
输入参数 : 目的尺寸
输出参数 : N/A
返回值 : 缩放后的image
备注 :
******************************************************************************/
-(UIImage*)scaleToSize:(CGSize)size
{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(size);
// 绘制改变大小的图片
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
// 从当前context中创建一个改变大小后的图片
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
// 返回新的改变大小后的图片
return scaledImage;
}
/******************************************************************************
函数名称 : imageCut
函数描述 : image剪切逻辑
输入参数 : image:要剪切的image 放置图片的imageview或button
输出参数 : N/A
返回值 : 剪切后的image
备注 :
******************************************************************************/
+(UIImage *)imageCut:(UIImage*)image view:(UIView *)view
{
CGRect rect;
CGSize size;
float scale1=image.size.width/view.frame.size.width;
float scale2=image.size.height/view.frame.size.height;
/****************/
//将image的图片按 图片与view的宽高比小的那一个size进行缩放
if (scale1>=scale2) {
size=CGSizeMake(1/scale2*image.size.width, view.frame.size.height);
}else {
size=CGSizeMake(view.frame.size.width, 1/scale1*image.size.height);
}
UIImage *image2=[image scaleToSize:size];
/****************/
//对缩放后的图片进行剪切
if (image2.size.width==view.frame.size.width) {
rect=CGRectMake(0,(image2.size.height- view.frame.size.height)/2, view.frame.size.width, view.frame.size.height);
}else {
rect=CGRectMake((image2.size.width- view.frame.size.width)/2, 0,view.frame.size.width,view.frame.size.height);
}
return [self CuttingImageWith:rect image:image2];
}
/******************************************************************************
函数名称 : CuttingImageWith
函数描述 : image剪切具体实现
输入参数 : rect:要剪切的位置 ;image:目标image
输出参数 : N/A
返回值 : 剪切后的image
备注 :
******************************************************************************/
+(UIImage*)CuttingImageWith:(CGRect)rect image:(UIImage *)image
{
CGImageRef imageRef = image.CGImage;
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect=[[[UIImage alloc]initWithCGImage:imageRefRect scale:1.0 orientation:image.imageOrientation]autorelease];
CGImageRelease(imageRefRect);
NSData *dataForPNGFile = UIImagePNGRepresentation(imageRect);
UIImage *returnImage=[[[UIImage alloc]initWithData:dataForPNGFile] autorelease];
return returnImage;
}