IOS中测量和调整UIImage到指定CGSize

+(UIImage*)imageByScalingAndCroppingForSize:(UIImage*)selectedImage withTargetSize:(CGSize)size
{
//	if (selectedImage.size.width > selectedImage.size.height) 
//	{
//		float height = (size.height * selectedImage.size.height) / selectedImage.size.width ;
//		size = CGSizeMake(size.width, height);
//	}
//	else 
//	{			
//		float width = (size.height * selectedImage.size.width) / selectedImage.size.height ;
//		size = CGSizeMake(width, size.width);
//	}
//	UIGraphicsBeginImageContext(size); 
//	[selectedImage drawInRect:CGRectMake(0, 0, size.width, size.height) blendMode:kCGBlendModePlusDarker alpha:1];
//	
//	UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
//	UIGraphicsEndImageContext(); 
//	return scaledImage;
	UIImage *newImage = nil;       
	CGSize imageSize = selectedImage.size;
	CGFloat width = imageSize.width;
	CGFloat height = imageSize.height;
	CGFloat targetWidth = size.width;
	CGFloat targetHeight = size.height;
	CGFloat scaleFactor = 0.0;
	CGFloat scaledWidth = targetWidth;
	CGFloat scaledHeight = targetHeight;
	CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
	
	if (CGSizeEqualToSize(imageSize, size) == NO)
	{
		CGFloat widthFactor = targetWidth / width;
		CGFloat heightFactor = targetHeight / height;
		
		if (widthFactor > heightFactor)
			scaleFactor = widthFactor; // scale to fit height
		else
			scaleFactor = heightFactor; // scale to fit width
		scaledWidth  = width * scaleFactor;
		scaledHeight = height * scaleFactor;
		
		// center the image
		if (widthFactor > heightFactor)
		{
			thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
		}
		else
			if (widthFactor < heightFactor)
			{
                thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
			}
	}       
	
	UIGraphicsBeginImageContext(size); // this will crop
	
	CGRect thumbnailRect = CGRectZero;
	thumbnailRect.origin = thumbnailPoint;
	thumbnailRect.size.width  = scaledWidth;
	thumbnailRect.size.height = scaledHeight;
	
	[selectedImage drawInRect:thumbnailRect];
	
	newImage = UIGraphicsGetImageFromCurrentImageContext();
	if(newImage == nil)
//		NSLog(@"could not scale image");
	
	//pop the context to get back to the default
	UIGraphicsEndImageContext();
	return newImage;
	
}	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值