1

我正在从 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];
4

1 回答 1

0

您确定两个环境之间的压缩因子(又名质量因子)比例相同吗?例如,使用UIImageJPEGRepresentation(iOS API) 的compressionQuality参数0.75给出的品质因数为93.

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

identify -format "%Q" myimage.jpg

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

于 2013-02-07T13:45:35.353 回答