gpt4 book ai didi

objective-c - 内存中PNG无损压缩为NSData?

转载 作者:行者123 更新时间:2023-12-03 17:26:12 25 4
gpt4 key购买 nike

我目前有一个包含有效 PNG 数据的 NSData:
NSData* imageData = [bitmapReprepresentationUsingType:NSPNGFileType 属性:nil];

我已将此数据写入文件:
[imageData writeToFile:@"test.png"原子地:YES];
使用 OptiPNG 或 PNGCrush 对其进行压缩会产生可喜的结果(压缩率超过 25%)。

我想在内存中执行此任务,向 NSData 添加一个类别以启用以下功能:
[imageData 优化PNGData]

但是,文件系统调用深深嵌入到 OptiPNG 和 PNGCrush 中,使得它们都不适合构建为库(例如 optipng.a)。

有谁知道如何完成类似的事情而不像大多数 GUI 包装器那样依赖 exec 调用?

最佳答案

如果您可以构建这些库并将它们链接到您的进程中,但您的问题是它们在路径上而不是字节 block 上运行,您可以使用 mkfifo 创建一个命名管道,然后向管道的一端提供来自您的进程并将另一端从 OptiPNG 或 PNGCrush 传递到函数中。您需要在调用库期间连续向管道提供数据,因此您可能需要第二个线程。

您可以在terminal.app中使用“man 2 mkfifo”阅读有关mkfifo()的信息。

关于objective-c - 内存中PNG无损压缩为NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245634/

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