Objective c PNG作为NSData在内存中的无损压缩?
我当前有一个包含有效PNG数据的NSData:Objective c PNG作为NSData在内存中的无损压缩?,objective-c,cocoa,png,nsdata,nsbitmapimagerep,Objective C,Cocoa,Png,Nsdata,Nsbitmapimagerep,我当前有一个包含有效PNG数据的NSData: NSData*imageData=[bitmapRep表示UsingType:NSPNGFileType属性:nil] 我已将此数据写入一个文件: [imageData WriteFile:@“test.png”原子化:是] 使用OptiPNG或PNGCrush对其进行压缩会产生有希望的结果(25%+压缩) 我想在内存中执行此任务,向NSData添加一个类别,以启用如下功能: [imageData optimizePNGData] 但是,文件系统调
NSData*imageData=[bitmapRep表示UsingType:NSPNGFileType属性:nil]代码>
我已将此数据写入一个文件:
[imageData WriteFile:@“test.png”原子化:是]代码>
使用OptiPNG或PNGCrush对其进行压缩会产生有希望的结果(25%+压缩)
我想在内存中执行此任务,向NSData添加一个类别,以启用如下功能:
[imageData optimizePNGData]
但是,文件系统调用深入到optpng和PNGCrush中,使得它们都不适合构建为库(例如optpng.a)
有没有人知道如何在不依赖exec调用的情况下完成类似的任务,就像大多数GUI包装器一样?如果您可以构建这些库并将它们链接到流程中,但您的问题是它们在路径上运行,而不是在字节块上运行,您可以使用mkfifo创建一个命名管道,然后将流程中的数据馈送到管道的一端,并将另一端从optpng或PNGCrush传递到函数中。在调用库的过程中,您需要不断地为管道馈电,因此可能需要第二个线程
您可以在terminal.app中通过“man 2 mkfifo”阅读有关mkfifo()的信息