为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用IOS轻松地调整/优化图像大小?

/ 猿问

如何使用IOS轻松地调整/优化图像大小?

慕哥6287543 2019-07-05 10:17:22

如何使用IOS轻松地调整/优化图像大小?

我的应用程序正在从网络下载一组图像文件,并将它们保存到本地iPhone磁盘上。其中一些图像的大小相当大(例如,宽度大于500像素)。由于iPhone甚至没有足够大的显示器来显示原来大小的图像,所以我计划将图像调整到更小的位置,以节省空间/性能。

此外,这些图像中的一些是JPEG,它们不会像通常的60%质量设置那样保存。

如何使用iPhoneSDK调整图片的大小,以及如何更改JPEG图像的质量设置?


查看完整描述

3 回答

?
一只甜甜圈

我们提供了一些建议,作为对这个问题..我建议使用这个职位,有关守则如下:

+ (UIImage*)imageWithImage:(UIImage*)image 
               scaledToSize:(CGSize)newSize;{
   UIGraphicsBeginImageContext( newSize );
   [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
   UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   return newImage;}

至于图像的存储,iPhone使用的最快的图像格式是PNG,因为它对该格式进行了优化。但是,如果要将这些图像存储为JPEG,可以使用UIImage并执行以下操作:

NSData *dataForJPEGFile = UIImageJPEGRepresentation(theImage, 0.6);

这将创建一个NSData实例,该实例包含JPEG图像的60%质量设置的原始字节。然后,可以将该NSData实例的内容写入磁盘或缓存在内存中。


查看完整回答
反对 回复 2019-07-05
?
元芳怎么了

调整图像大小的最简单、最直接的方法是

float actualHeight = image.size.height;float actualWidth = image.size.width;float imgRatio = actualWidth/actualHeight;
float maxRatio = 320.0/480.0;if(imgRatio!=maxRatio){
    if(imgRatio < maxRatio){
        imgRatio = 480.0 / actualHeight;
        actualWidth = imgRatio * actualWidth;
        actualHeight = 480.0;
    }
    else{
        imgRatio = 320.0 / actualWidth;
        actualHeight = imgRatio * actualHeight;
        actualWidth = 320.0;
    }}CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);UIGraphicsBeginImageContext(rect.size);
    [image drawInRect:rect];UIImage *img = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();


查看完整回答
反对 回复 2019-07-05
?
达令说

以上方法适用于小图像,但当您试图调整一个非常大的图像大小时,您将很快耗尽内存并使应用程序崩溃。一个更好的方法是使用CGImageSourceCreateThumbnailAtIndex在没有完全解码的情况下调整图像的大小。

如果您有要调整大小的图像路径,则可以使用以下命令:

- (void)resizeImageAtPath:(NSString *)imagePath {
    // Create the image source (from path)
    CGImageSourceRef src = CGImageSourceCreateWithURL((__bridge CFURLRef) [NSURL fileURLWithPath:imagePath], NULL);

    // To create image source from UIImage, use this
    // NSData* pngData =  UIImagePNGRepresentation(image);
    // CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)pngData, NULL);

    // Create thumbnail options
    CFDictionaryRef options = (__bridge CFDictionaryRef) @{
            (id) kCGImageSourceCreateThumbnailWithTransform : @YES,
            (id) kCGImageSourceCreateThumbnailFromImageAlways : @YES,
            (id) kCGImageSourceThumbnailMaxPixelSize : @(640)
    };
    // Generate the thumbnail
    CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src, 0, options); 
    CFRelease(src);
    // Write the thumbnail at path
    CGImageWriteToFile(thumbnail, imagePath);}

更多细节这里.


查看完整回答
反对 回复 2019-07-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信