0

经过长时间的努力,我设法在 MacOSX (Yosemite) 上生成(使用 Ant)一个 DMG(部署到*.app文件夹的模块化 JavaFX 应用程序),即使使用应用程序和 DMG 卷的自定义图标(两者都作为*.icns文件存储在构建package/macosx文件夹中)。拖放工作,它安装应用程序,应用程序启动,所以一切都很好。嗯,差不多。

我也很想为 DMG 制作自定义背景。它与文件夹中的图标一起package/macosx作为App-background.png文件放置(其中App部分是我的应用程序的名称,与图标一样)。并且javapackager实际上拾取了背景,但不幸的是打开DMG后背景似乎放在了窗口的左上角,窗口本身就像背景的两倍大小,所以窗口背景的3/4只是白色。

我尝试了不同的PNG尺寸,但无济于事。DMG 窗口总是比图像大。

有什么方法可以制作javapackager(也fx:deploy就是我实际使用的)以适当的设置生成 DMG,只使 DMG 窗口适合背景大小?

编辑:似乎DMG窗口实际上具有PNG(原始背景文件)的大小,但由于某种原因,当显示为背景时,图像“略微”缩小了。

4

1 回答 1

1

经过长时间的调查,我发现了这种不当行为的(不是那么明显也不是直接的)原因。幸运的是,我也找到了解决方案。

显然 Finder 在显示 DMG 文件时处理 PNG 存在一些问题。这一切都归结为pHYs包含 3 个字段(分别为 4b、4b 和 1b 长)的块。它是 x 轴上的每单位像素,y 轴上的每单位像素,单位为 0 或 1(0 无单位,1 米单位)。使用这些值(通过十六进制编辑器)确实以某种方式改变了缩放行为(和窗口大小),但我无法找出正确的值。最终我完全摆脱了这个块(从 GIMP 导出为 PNG而不保存分辨率)并且解决了这个问题。

因此,对于任何为此苦苦挣扎的人:只要确保pHYsPNG 文件中没有块

编辑:使用 ImageMagick 可以轻松做到这一点:

$ convert image.png -define png:exclude-chunk=pHYs image.png

This strips pHYs chunk from the image.png file.

于 2018-11-11T00:28:48.640 回答