Objective C - 图像尺寸更大

时间:2013-02-07 10:57:08

标签: objective-c image png jpeg

我正在从Java迁移到Objective C,用于Mac应用程序。这是一个屏幕共享应用程序。

通过分析,我发现,使用Objective C创建的图像的大小大于使用Java创建的图像的大小。我打算将JPEG用于桌面和桌面浏览器/资源管理器窗口的其他图像窗口和8位PNG。对于这两种格式,Java更好(即图像尺寸较小)。

例如:当我创建具有0.6压缩因子的JPEG图像时,使用Java创建的图像的大小为103KB。使用Objective C创建相同的图像时,它是201KB。

有没有办法优化图像大小,以便使用Objective C创建的图像与使用Java创建的图像相同或更小?

使用目标C代码

NSSize imageSize = [image size]; [image lockFocus]; NSRect imageRect =
NSMakeRect(0, 0, imageSize.width, imageSize.height); NSBitmapImageRep*
myBitmapImageRep = [[NSBitmapImageRep alloc]
initWithFocusedViewRect:imageRect]; [image unlockFocus]; NSDictionary*
options = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithDouble:imageCompression], NSImageCompressionFactor,
                                 [NSNumber numberWithBool:NO], NSImageProgressive,
                                 nil]; NSData* imageData = [myBitmapImageRep representationUsingType:fileType
properties:options];

1 个答案:

答案 0 :(得分:0)

您确定两种环境的压缩系数(a.k.a品质因数)比例是否相同?例如使用UIImageJPEGRepresentation(iOS API),compressionQuality 0.75参数的质量系数为93

如果我是你,我首先检查两个图像上的品质因数是否相同,例如:使用ImageMagick:

identify -format "%Q" myimage.jpg

如果两个图像上的质量因素相同,则需要检查哪些JPEG编码选项不同 - 此处ImageMagick identify再次成为您的朋友。