Objective c 如何在Cocoa中获得JPEG图像的压缩因子?

Objective c 如何在Cocoa中获得JPEG图像的压缩因子?,objective-c,cocoa,jpeg,nsimage,Objective C,Cocoa,Jpeg,Nsimage,OSX应用程序读取JPEG图像,进行一些处理,并打算使用原始图像的压缩系数保存图像 我在获取原始图像的压缩系数时遇到了麻烦。NSImage类没有类似的东西 NSBitmapImageRep类具有方便的方法: - (void)getCompression:(NSTIFFCompression *)compressionfactor:(float *)factor -(void)getCompression:(NSTIFFCompression*)压缩因子:(float*)因子 但是,如果我从NSD

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

我在获取原始图像的压缩系数时遇到了麻烦。NSImage类没有类似的东西

NSBitmapImageRep类具有方便的方法:

- (void)getCompression:(NSTIFFCompression *)compressionfactor:(float *)factor -(void)getCompression:(NSTIFFCompression*)压缩因子:(float*)因子 但是,如果我从NSData读取的NSBitmapImageRep中获取包含文件内容的数据,则得到的压缩因子为零

有什么想法吗?如何获得可可色JPEG图像的压缩因子?

使用库很容易:

Image magick_image( [pathname cStringUsingEncoding:NSUTF8StringEncoding] ); size_t compressionFactor = magick_image.quality(); // 0..100 图像magick_图像([路径名cStringUsingEncoding:NSUTF8StringEncoding]); 大小压缩因子=magick\u image.quality();//0..100

它是ObjuleC和C++的混合,称为ObjuleC++。MAGICK++,顾名思义,是C++库,是C库IMAGEMGEGK上的包装器。在上面的代码片段中,图像是来自MaGix++库的C++类。路径名是NSString Objective-C类的对象。

使用库很容易:

Image magick_image( [pathname cStringUsingEncoding:NSUTF8StringEncoding] ); size_t compressionFactor = magick_image.quality(); // 0..100 图像magick_图像([路径名cStringUsingEncoding:NSUTF8StringEncoding]); 大小压缩因子=magick\u image.quality();//0..100

它是ObjuleC和C++的混合,称为ObjuleC++。MAGICK++,顾名思义,是C++库,是C库IMAGEMGEGK上的包装器。在上面的代码片段中,图像是来自MaGix++库的C++类。路径名是NSString Objective-C类的对象。

您可以尝试此方法,但根据我的经验,它并不总是有效的

NSNumber* factor = [imageRep valueForProperty:NSImageCompressionFactor];
以下是来自
NSBitmapImageRep
的该属性的苹果文档

NSImageCompressionFactor

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

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


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

您可以尝试此功能,但根据我的经验,它并不总是有效的

NSNumber* factor = [imageRep valueForProperty:NSImageCompressionFactor];
以下是来自
NSBitmapImageRep
的该属性的苹果文档

NSImageCompressionFactor

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

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


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

对于JPEG来说,压缩因子是一个松散的概念。我不认为有一个标准的定义,它取决于用于编码的软件。它只会间接影响写入文件的值,因此没有任何值可以直接从JPEG文件.P.s中提取。以下是微软对C#主题的看法:嗯,微软的文章很有解释性。还有一种方法可以检查或计算图像的压缩因子。使用键识别ImageMagick套件的实用程序-verbose等给出了压缩因子。压缩因子对于JPEG来说是一个松散的概念。我不认为有一个标准的定义,它取决于用于编码的软件。它只会间接影响写入文件的值,因此没有任何值可以直接从JPEG文件.P.s中提取。以下是微软对C#主题的看法:嗯,微软的文章很有解释性。还有一种方法可以检查或计算图像的压缩因子。使用键识别ImageMagick套件的实用程序-详细信息等提供了压缩因子。