【问题标题】:Objective C - Image size is larger目标 C - 图像尺寸更大
【发布时间】:2013-01-22 20:28:51
【问题描述】:

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

【问题讨论】:

    标签: objective-c image png jpeg


    【解决方案1】:

    您确定两种环境之间的压缩因子(也称为品质因子)比例相同吗?例如使用UIImageJPEGRepresentation(iOS API)compressionQuality 参数0.75 给出93 的品质因数。

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

    identify -format "%Q" myimage.jpg
    

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

    【讨论】:

    • 经过长时间的奋斗,我安装了imagemagick。但我收到以下错误断言失败:(dec->numcomps == 3),函数 jpc_dec_tiledecode,文件 jpc_dec.c,第 1077 行。中止陷阱:6
    • 听起来好像你的 jasper 库已经很老了(这个bug 已经修补了一段时间了)。话虽这么说:您在使用 JPEG-2000 文件吗?我假设您正在使用(基本)JPEG 文件...
    • 我都试过了——基本的JPEG和JPEG2000。我收到了使用 Java 创建的 JPEG 的响应。但是当我尝试“识别”使用 Objective C 创建的 JPEG/JPEG2000 时出现上述错误? $ 识别格式“%Q” java-1358420666033.jpg 60
    • 我的回答只不过是一个建议,用于确保在 Java 和 Objective-C 上编码基本 JPEG 文件时使用相同的选项(最重要的是相同的质量因子)。也许您应该编辑您的问题并详细说明,以便提供更高的精度,并指出您也在尝试使用 JPEG-2000,以便其他人可以提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多