图片的缩放和剪切

/********************************************************************
 文件名称 :  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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值