gpt4 book ai didi

iphone - 如何在 iOS 中将 UIImage 保存为渐进式 JPEG 格式?

转载 作者:可可西里 更新时间:2023-11-01 03:30:15 26 4
gpt4 key购买 nike

在 iOS 中,为了将 UIImage 保存为 JPEG,我使用了 UIImageJPEGRepresentation,但是它除了压缩比之外没有其他选项。我想将 UIImage 保存为 progressive JPEG 格式,有没有简单的方法可以做到这一点?

看起来在 OS X 中有一个 NSImageProgressive 选项可以将 NSImage 保存为渐进式格式。

最佳答案

我认为您可以使用 ImageIO 框架来实现,如下所示:

#import <UIKit/UIKit.h>
#import <ImageIO/ImageIO.h>
#import <MobileCoreServices/MobileCoreServices.h>
#import "AppDelegate.h"

int main(int argc, char *argv[])
{
@autoreleasepool {
UIImage *sourceImage = [UIImage imageNamed:@"test.jpg"];

CFURLRef url = CFURLCreateWithString(NULL, CFSTR("file:///tmp/progressive.jpg"), NULL);
CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypeJPEG, 1, NULL);
CFRelease(url);

NSDictionary *jfifProperties = [NSDictionary dictionaryWithObjectsAndKeys:
(__bridge id)kCFBooleanTrue, kCGImagePropertyJFIFIsProgressive,
nil];

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat:.6], kCGImageDestinationLossyCompressionQuality,
jfifProperties, kCGImagePropertyJFIFDictionary,
nil];

CGImageDestinationAddImage(destination, sourceImage.CGImage, (__bridge CFDictionaryRef)properties);
CGImageDestinationFinalize(destination);
CFRelease(destination);

return 0;
}
}

Preview.app 表示输出文件是渐进式的,而 ImageMagick 的 identify 命令表示它有“Interlace: JPEG”。

关于iphone - 如何在 iOS 中将 UIImage 保存为渐进式 JPEG 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814082/

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