gpt4 book ai didi

ios - 在不影响 objective-c 质量的情况下缩小图像

转载 作者:可可西里 更新时间:2023-11-01 03:39:00 25 4
gpt4 key购买 nike

如何在不影响质量的情况下以编程方式缩小图像。

捕获图像后,我想在不改变 objective-c 质量的情况下减小该图像的大小。

最佳答案

这是我用来压缩图片的代码

代码:

-(UIImage *)compressImage:(UIImage *)image{

NSData *imgData = UIImageJPEGRepresentation(image, 1); //1 it represents the quality of the image.
NSLog(@"Size of Image(bytes):%ld",(unsigned long)[imgData length]);

float actualHeight = image.size.height;
float actualWidth = image.size.width;
float maxHeight = 600.0;
float maxWidth = 800.0;
float imgRatio = actualWidth/actualHeight;
float maxRatio = maxWidth/maxHeight;
float compressionQuality = 0.5;//50 percent compression

if (actualHeight > maxHeight || actualWidth > maxWidth){
if(imgRatio < maxRatio){
//adjust width according to maxHeight
imgRatio = maxHeight / actualHeight;
actualWidth = imgRatio * actualWidth;
actualHeight = maxHeight;
}
else if(imgRatio > maxRatio){
//adjust height according to maxWidth
imgRatio = maxWidth / actualWidth;
actualHeight = imgRatio * actualHeight;
actualWidth = maxWidth;
}
else{
actualHeight = maxHeight;
actualWidth = maxWidth;
}
}

CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
NSData *imageData = UIImageJPEGRepresentation(img, compressionQuality);
UIGraphicsEndImageContext();

NSLog(@"Size of Image(bytes):%ld",(unsigned long)[imageData length]);

return [UIImage imageWithData:imageData];
}

所以这是使用上面的代码

UIImage *org = [UIImage imageNamed:@"MacLehose Stage 7 Stunning Natural Sceneries.jpg"];

UIImage *imgCompressed = [self compressImage:org];

如果要压缩更多

NSData *dataImage = UIImageJPEGRepresentation(imgCompressed, 0.0);

NSLog(@"Size of Image(bytes):%ld",(unsigned long)[dataImage length]);

通过上述方式,我能够将图像从 2 MB 压缩到接近 50 KB。

关于ios - 在不影响 objective-c 质量的情况下缩小图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com