1. 程式人生 > >IOS中將照片壓縮至指定大小

IOS中將照片壓縮至指定大小

-(UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize withImage:(UIImage*)img

{

UIImage *sourceImage =img;

UIImage *newImage =nil;

CGSize imageSize =sourceImage.size;

CGFloat width =imageSize.width;

CGFloat height =imageSize.height;

CGFloat targetWidth =targetSize.width;

CGFloat targetHeight =targetSize.height;

CGFloat scaleFactor =0.0;

CGFloat scaledWidth =targetWidth;

CGFloat scaledHeight =targetHeight;

CGPoint thumbnailPoint= CGPointMake(0.0,0.0);

if(CGSizeEqualToSize(imageSize, targetSize) == 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;

原文地址:http://gaohaijun.blog.163.com/blog/static/176698271201192325646792

/


// center the image

if (widthFactor >heightFactor)

{

thumbnailPoint.y =(targetHeight - scaledHeight) * 0.5;

}

else if (widthFactor< heightFactor)

{

thumbnailPoint.x =(targetWidth - scaledWidth) * 0.5;

}

}

UIGraphicsBeginImageContext(targetSize); // this will crop

CGRect thumbnailRect =CGRectZero;

thumbnailRect.origin =thumbnailPoint;

thumbnailRect.size.width= scaledWidth;

thumbnailRect.size.height = scaledHeight;

[sourceImagedrawInRect:thumbnailRect];

newImage =UIGraphicsGetImageFromCurrentImageContext();

if(newImage == nil)

NSLog(@"could not scaleimage");

//pop the context toget back to the default

UIGraphicsEndImageContext();

return newImage;

}