作为NSData在内存中无损压缩PNG?
问题描述:
我现在有一个NSData与有效PNG数据:NSData* imageData = [bitmapRep representationUsingType:NSPNGFileType properties:nil];
作为NSData在内存中无损压缩PNG?
我写这个数据到一个文件:[imageData writeToFile:@"test.png" atomically:YES];
而且随着使用OptiPNG或PNGCrush压缩它产生有希望的结果(25%+压缩)。
我想执行内存这项任务,增加了类别NSData的启用是这样的:[imageData optimizePNGData]
然而,文件系统调用烤深入到双方使用OptiPNG和PNGCrush,使得两者都不它们适合作为一个图书馆(例如optipng.a)。
有没有人有任何想法,如何实现类似的东西,而不依赖于exec调用,因为大部分的GUI包装呢?
答
如果您可以构建这些库并将它们链接到您的进程中,但问题是它们在路径上而不是字节块上运行,则可以使用mkfifo创建一个命名管道,然后为管道的一端提供数据从你的过程中,将另一端传递给OptiPNG或PNGCrush的功能。您需要在调用库的过程中不断地输入管道,因此您可能需要第二个线程。
你可以在terminal.app中用“man 2 mkfifo”阅读mkfifo()。