BLumia / pineapple-pictures

A homebrew lightweight image viewer.
https://sourceforge.net/projects/pineapple-pictures/
MIT License
403 stars 51 forks source link

Windows: 支持HEIC格式 #99

Open cherub0507 opened 1 year ago

cherub0507 commented 1 year ago

希望能支持

BLumia commented 1 year ago

假定你是 Windows 用户并且用的是我预编译好的版本,那添加这个支持需要做的事情就是在 CI 环境里编译好 LibHeif。

我最近不太有空去和 CI 打乒乓,如果你(或者任何看到这个 Issue 的人)有意愿的话,欢迎 PR :)

cherub0507 commented 1 year ago

“需要做的事情就是在 CI 环境里编译好 LibHeif” 是我做不到的事情 image

BLumia commented 1 year ago

我短期内可能没空做这件事情,那就只能等其他人贡献或者等我有空了。

BLumia commented 6 months ago

上周刚好有一点空于是就折腾了一下,插件是顺利编译出来了但我手头的测试文件却完全加载不了。相比 MSYS2 环境的现成依赖倒是可以工作的很正常,不清楚是不是还有什么别的依赖需要额外处理...

作为参考目前的修改是: https://github.com/BLumia/pineapple-pictures/commit/9743bd7d7a54262159bab7210697d3960487d4b1 (位于名为 heif 的分支)

暂时没有更多精力折腾了,可能又要搁置一段时间。有兴趣的人可能可以参考上面的修改继续搞((

lighter540923555 commented 4 months ago

能否使用网上第三方编译的libheif.dll添加到文件夹里使用?

BLumia commented 4 months ago

能否使用网上第三方编译的libheif.dll添加到文件夹里使用?

如果你指的是我在 release 里提供的版本的话,只放那个 DLL 不够,需要把 HEIF 的插件也构建出来(kimg_heif.dll)。

如果你指的是 https://github.com/BLumia/pineapple-pictures/issues/99#issuecomment-2094082067 里提到的版本的话,是的。但需要注意,这里 CI 使用的是 MinGW 进行的构建,所以不能使用 MSVC 版本的 DLL(否则就得包括程序本体和相关依赖也使用 MSVC 构建才行)。

不过事实上如果完全走 MSYS2 编译的话是默认支持 HEIF 格式的(需要 kimageformats,MSYS2 仓库里本身就有,直接装就行),不需要任何额外干预,甚至默认还支持更多其他格式。只是走 MSYS2 的话打包出来的 DLL 文件会比我目前提供的版本多出来很多,会减慢一点点启动速度,所以我提供的版本没选这种方案。

BLumia commented 4 months ago

新的进展。

既然我懒得折腾 MinGW 环境的构建,于是考虑干脆提供一个 MSVC 版本,这样可以复用别人构建好的依赖。目前 MSVC 的 CI 已经就绪了。当前体验步骤如下:

  1. 目前可以在 https://github.com/BLumia/pineapple-pictures/actions/runs/9817575459 下载 windows-msvc2022-qt6.5.3-cmake-package ,下载完毕后解压到自己偏好的位置。(后续这个 CI 会合入主干,可以自己找到对应的)
  2. 前往 jurplel/kimageformats-binaries 的 Release 页面 下载 msvc 与 qt 版本均对应的插件资源包,比如这个例子对应到 kimageformats-windows-2022-6.5.3-win64_msvc2019_64.zip(可能需要点击 Show all XX assets 展开显示完整资源列表)
  3. 将上述第二步下载到的资源包中 kimg_ 前缀的 DLL 文件解压到第一步看图程序所在位置的 imageformats 文件夹内
  4. 将上述第二步下载到的资源包中不是以 kimg_ 为前缀的 DLL 文件解压到 ppic.exe 主程序所在的文件夹内
  5. 完成,已经可以正常打开 HEIC 格式(以及包括 JXL 之类的其他格式)的图像文件了。

image

需要注意的是,截至目前,这个 CI 构建的 msvc 版本并未提供 EXIF 元信息支持,也就是说在属性对话框看到的信息会只有基本信息。后续可能会提供包含 EXIF 支持的版本,但这个和此 issue 就没有关系了。