Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c PNG作为NSData在内存中的无损压缩?_Objective C_Cocoa_Png_Nsdata_Nsbitmapimagerep - Fatal编程技术网

Objective c 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] 但是,文件系统调

我当前有一个包含有效PNG数据的NSData:
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()的信息