我正在从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];
答案 0 :(得分:0)
您确定两种环境的压缩系数(a.k.a品质因数)比例是否相同?例如使用UIImageJPEGRepresentation
(iOS API),compressionQuality
0.75
参数的质量系数为93
。
如果我是你,我首先检查两个图像上的品质因数是否相同,例如:使用ImageMagick:
identify -format "%Q" myimage.jpg
如果两个图像上的质量因素相同,则需要检查哪些JPEG编码选项不同 - 此处ImageMagick identify
再次成为您的朋友。