1

OSX 应用程序读取 JPEG 图像,进行一些处理,并打算以原始图像的压缩系数保存图像。

我偶然发现了原始图像的压缩系数。NSImage 类没有类似的东西。

NSBitmapImageRep 类有方便的方法:

- (void)getCompression:(NSTIFFCompression *)compressionfactor:(float *)factor

但是,如果我从使用 dataWithContentsOfFile 读取的 NSData 中获得 NSBitmapImageRep,我会得到零压缩因子。

任何想法,如何在 Cocoa 中获得 JPEG 图像的压缩系数?

4

2 回答 2

1

使用ImageMagick++库很容易:

图像magick_image([路径名cStringUsingEncoding:NSUTF8StringEncoding]);
size_t 压缩因子 = magick_image.quality(); // 0..100

它是 Objective-C 和 C++ 的混合体,称为 Objective-C++。顾名思义,Magick++ 是 C++ 库,是 C 库 ImageMagick 的包装器。在上面的代码片段中 Image 是来自 Magick++ 库的 C++ 类。pathname 是 NSString Objective-C 类的对象。

于 2012-10-15T00:22:03.343 回答
0

你可以试试这个,但根据我的经验,它并不总是有效。

NSNumber* factor = [imageRep valueForProperty:NSImageCompressionFactor];

这是该属性的 Apple 文档,来自NSBitmapImageRep.

NSImageCompressionFactor

标识包含图像压缩因子的 NSNumber 对象。

仅用于 JPEG 文件。不支持 TIFF 文件中的 JPEG 压缩,并且忽略该因素。该值是介于 0.0 和 1.0 之间的浮点数,其中 1.0 导致不压缩,而 0.0 导致可能的最大压缩。它在读入时设置,在写出图像时使用。

在 OS X v10.0 及更高版本中可用。

于 2015-04-14T18:20:06.157 回答