所以,这就是我需要的:
NSImage
在过去,我尝试使用OptiPNG - 作为编译二进制文件(并异步获取结果) - 这是有效的。
然而,如果我不想要一个类似终端的解决方案与外部应用程序,但更多的Cocoa本地?
有什么想法吗?
答案 0 :(得分:-1)
NSImage* image; // your NSImage
// With compression
NSData* data = [image
TIFFRepresentationUsingCompression:NSTIFFCompressionLZW
factor:0.5f]; // you can change factor between 0 and 1.0 for preferred compression rate
if (data != nil) {
NSBitmapImageRep* bitmap = [[NSBitmapImageRep alloc] initWithData:data];
if (bitmap != nil) {
NSData* bitmapData = [bitmap
representationUsingType:NSBitmapImageFileTypePNG
properties:@{}];
if (bitmapData != nil) {
[bitmapData
writeToFile:<file_path> //path where to save png
atomically:true];
}
}
}
更新:如评论中所述,这不会压缩png。
但是,我在ShareExtension中使用了此代码,它很好地压缩了收到的屏幕截图(如果使用明文保存,则可以从1.1-1.5MB压缩到使用presentationUsingType的0.4-0.7MB),并且没有质量损失,就像OP要求的那样。