我需要帮助调整UIImage的大小。
例如:我在UICollection View中显示了很多图片,但这些图片的大小为2到4 MB。我需要压缩或调整这些图像。
我找到了这个链接:iPhone OS SDK上如何在上传到服务器之前压缩/调整图像? 但我不知道如何实现它。
我需要帮助调整UIImage的大小。
例如:我在UICollection View中显示了很多图片,但这些图片的大小为2到4 MB。我需要压缩或调整这些图像。
我找到了这个链接:iPhone OS SDK上如何在上传到服务器之前压缩/调整图像? 但我不知道如何实现它。
您不确定是要调整大小、压缩还是两者兼而有之。
以下代码仅用于压缩:
使用JPEG压缩只需两个简单步骤:
1)将UIImage转换为NSData
UIImage *rainyImage =[UImage imageNamed:@"rainy.jpg"];
NSData *imgData= UIImageJPEGRepresentation(rainyImage,0.1 /*compressionQuality*/);
这是有损压缩,图像大小被减小。
2) 转换回UIImage;
UIImage *image=[UIImage imageWithData:imgData];
对于缩放,您可以使用Matteo Gobbi提供的答案。但是缩放可能不是最好的选择。您更喜欢通过压缩获得实际图像的缩略图,因为缩放可能会使您的图像在视网膜显示设备上看起来糟糕。
- (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)newSize {
CGSize actSize = image.size;
float scale = actSize.width/actSize.height;
if (scale < 1) {
newSize.height = newSize.width/scale;
} else {
newSize.width = newSize.height*scale;
}
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
[self scaleImage:yourUIImage toSize:CGMakeSize(300,300)];
lowResImage = [UIImage imageWithData:UIImageJPEGRepresentation(highResImage, quality)];
-(UIImage *) resizeImage:(UIImage *)orginalImage resizeSize:(CGSize)size
{
CGFloat actualHeight = orginalImage.size.height;
CGFloat actualWidth = orginalImage.size.width;
float oldRatio = actualWidth/actualHeight;
float newRatio = size.width/size.height;
if(oldRatio < newRatio)
{
oldRatio = size.height/actualHeight;
actualWidth = oldRatio * actualWidth;
actualHeight = size.height;
}
else
{
oldRatio = size.width/actualWidth;
actualHeight = oldRatio * actualHeight;
actualWidth = size.width;
}
CGRect rect = CGRectMake(0.0,0.0,actualWidth,actualHeight);
UIGraphicsBeginImageContext(rect.size);
[orginalImage drawInRect:rect];
orginalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return orginalImage;
}
//this image you can add it to imageview.....