Ubuntu 上有什么应用程序可以打开和/或转换 HEIF 图片(.HEIC,高效图像文件格式)吗?

某个手机制造商已经将拍照的默认格式更改为HEIF(.HEIC,高效图像文件格式),而不征求用户的意见(尽管仍然可以选择使用jpeg/jpg)。
在Ubuntu上是否有一个可以打开和/或转换HEIF图片甚至让它们被编辑的应用程序/程序?

你可能需要批量转换:iOS 11 新的照片格式 HEIF https://github.com/pushd/heif - oldfred
https://github.com/nokiatech/heif/blob/master/LICENSE.TXT 是我假设的新的一个。 - Rinzwind
3关于背景,请注意:HEIF于2015年引入,随着iOS 11的推出,苹果于2017年采用了该格式。请阅读关于苹果引入此功能以及由于COVID而导致的在线考试导致学生在2020年未能通过AP考试的文章:https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format - nealmcb
1在Ubuntu中已经报告了一个关于HEIF/HEIC支持的错误,请参见https://launchpad.net/bugs/1886271。 - Mantas Baltix
6个回答

在最近的Ubuntu版本(>= 18.04)中:
sudo apt-get install libheif-examples

然后
for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done

在旧版的Ubuntu或Mint中,首先添加this PPA,然后执行上述步骤。
sudo add-apt-repository ppa:strukturag/libheif
sudo apt-get update

23
  1. 这是一个官方的18.04软件包(https://packages.ubuntu.com/bionic/libheif-examples)。
  2. 我不得不在两个地方将.heic更改为.HEIC,因为我的文件名是大写的。谢谢!这个方法非常有效!
- Modular
6对于每个*.HEIC文件,执行以下操作:heif-convert -q 100 $file $file.jpg。 - SD.
3谢谢这篇帖子,非常有帮助!我想提醒其他人一个小问题:我对Bash和终端脚本不太熟悉,花了我超过30分钟才弄清楚为什么粘贴这个命令会导致错误“输入文件不是HEIF文件”,原来是因为我的文件扩展名是大写的HEIC,而命令使用的是小写。 - hallvors
6这个答案对于文件名中包含空格或换行符的文件无效。以下版本可以解决这个问题:for file in *.HEIC; do heif-convert "$file" "${file/%.HEIC/.jpg}"; done - Yordan Grigorov
转换将维护和存储转换的负担转嫁给用户。另一个答案(heif-gdk-pixbuf)是一种更长期的更好解决方案。 - Ryan
谢谢这个。我一开始还在想什么鬼是heic文件?我买了一个新的Chromebook来连接我的安卓手机,从相机上复制了一堆heic文件,然后按照上面的指示成功将它们转换成了jpeg格式,这样我就可以用Gimp来编辑它们了。 - rodmclaughlin
1不要忘记指定JPEG质量,并在文件名中引用参数,如果有空格或其他特殊字符:for file in *.heic; do heif-convert -q 97 "$file" "${file/%.heic/.jpg}"; done - Sergey Galin

Ubuntu 22.04 快速入门

  • 为了在至少 eog (Eye of GNOME, GNOME 图像查看器) 中提供支持,请安装 heif-gdk-pixbuf
  • 为文件管理器(nautilus、nemo)缩略图,请安装 heif-thumbnailer
  • Geeqie、ImageMagick、gThumb 等软件的可用版本(请参见下文)都已内置支持。

官方软件包

Ubuntu 20.04 开始:至少对于 eog (Eye of GNOME, GNOME 图像查看器),您需要安装软件包 heif-gdk-pixbuf(无需 PPA)。在终端中运行以下命令:

sudo apt install heif-gdk-pixbuf

这将安装libheif1libde265-0
显然,带有KDE Frameworks 5.80KDE发行版已经为所有KDE应用程序添加了对HEIF和HEIC图像格式的支持(新闻, KDE公告, MR),但是在默认的(K)ubuntu软件包中,支持标志尚未启用ubuntu bug)。
通过libheif1支持HEIF的程序/应用包括: 看到 最佳搜索软件依赖的方法?用于转换 HEIF/HEIC 图片的程序/应用:
大多数上述提到的应用都支持转换 HEIC 照片,例如 eog(Eye of GNOME), GIMP, Krita, GPicView
通过其中一个图像查看器/编辑器打开照片,然后选择 导出为 JPG(或其他像 PNG 这样的图像格式)或 另存为(选择与 HEIC 不同的图像格式)。

对于命令行上的批量转换,使用 heif-convert 或 ImageMagick 的 convert

非官方软件包和较旧的 Ubuntu 版本

如果愿意安装 Flatpak、Snap 应用程序或 PPA:

  • GNOME Image Viewer (Eye of GNOME - eog)可以处理HEIF图片,需要安装/更新一个更新的gdk-pixbuf插件,可以通过上述libheif-PPA进行安装/更新在Ubuntu 14.04、16.04和18.04上。在终端中运行以下命令:

    sudo add-apt-repository ppa:strukturag/libheif
    

    安装包 heif-gdk-pixbuf。在终端中运行以下命令:

    sudo apt install heif-gdk-pixbuf
    
  • gThumb图像查看器和组织工具有一个非官方PPA适用于Ubuntu 18.04、Ubuntu 20.04、Ubuntu 21.04、Ubuntu 21.10、Linux Mint 20和衍生版本:

    sudo add-apt-repository ppa:ubuntuhandbook1/apps  
    sudo apt update  
    sudo apt install gthumb 
    
  • Geeqie 1.6支持HEIF。它可在22.04中使用;也可以从AppImage安装,或者在ubuntu 18.04和20.04上PPA安装。

  • ImageMagick 6.9支持HEIF,在ubuntu 22.04上可用;在ubuntu 18.04和20.04上可以从bleeding edge PPA安装,该PPA还提供了更新的libheif1(截至2021年10月为1.12,而不是1.6)。 如果颜色看起来错误/倒置,您可能需要使用display -colorspace sRGB进行YCbCr转换(来源:github)。

  • Qt图像插件封装了libheif。它由jakar创建,并可以在ubuntu 14.04到19.04上PPA安装。在更高版本上,您可以根据bug 1951278重新构建kimageformats。

Ubuntu 19.10
在已安装的libheif1版本中存在一些明显的错误,因此请更新到“struktur AG”团队提供的最新版本:
在终端中执行以下命令:sudo add-apt-repository ppa:strukturag/libheif

软件包升级(2020年9月)
您还需要添加PPA strukturag/libde265以获取正确的依赖项:

sudo add-apt-repository ppa:strukturag/libde265  
sudo apt update  
sudo apt upgrade  

(如果你遇到错误 add-apt-repository: not found,请确保已安装 software-properties-common 软件包,例如 sudo apt install software-properties-common)
不想安装 PPA 的用户可以直接从 PPA 网页下载软件包进行安装(dpkg -i)或重新编译。以这种方式安装的软件包将不会自动更新。
在线工具
- Google Photos 和 Dropbox 都支持 HEIF 格式。 - 还有其他在线转换工具(例如 HEICtoJPEG),但在使用之前,请先查看其隐私政策。
杂项
  • ImageMagick从7.0.7-22版本开始,可以使用--with-libheif参数进行编译。使用IMEI可以一键构建。(预编译的AppImage目前还不支持heic格式。)

  • tifig被描述为“一个快速的HEIF图像转换器,用于生成缩略图”。然而,目前必须从源代码编译。

  • Nokia HEIF Info源代码提供了相关信息。然而,Apple的实现略有不同。

  • Windows 10 Build 17623中的照片应用程序支持HEIF格式。然而,在使用之前可能需要安装以下内容:


1不确定如何妥善提及这一点(也许我应该编辑而不是评论?),但我创建了一个Qt图像插件,它包装了libheif。我想创建一个PPA,但目前还没有实现。 - jakar
2Qt插件PPA现已可用。 - jakar
是的,那就是我想说的。 - Ben McCann
1我正在使用Ubuntu 19.10,而且我能够在“图像查看器”中打开HEIF图像,而无需进行任何特殊操作-没有额外的PPA。 - seanlano
尽管我已经安装了heif-gdk-pixbuf,并且添加了PPA,但在Ubuntu 20.04中无法使用eog打开HEIC文件。而且,添加PPA时出现错误(“http://ppa.launchpad.net/lucioc/sayonara/ubuntu focal Release”存储库没有Release文件。从此类存储库进行更新无法确保安全,因此默认情况下被禁用)。 - weronika
@weronika 很遗憾,它还不能为你工作。它应该可以在没有PPA的情况下工作。当您尝试打开HEIF图片时显示了什么错误?- 您评论中提到的PPA与HEIF图片无关,而是与Sayonara播放器(https://launchpad.net/~lucioc/+archive/ubuntu/sayonara)有关。对于HEIF软件包更新,请使用另一个PPA:sudo add-apt-repository ppa:strukturag/libde265。 - Filbuntu
哇,你说得对,这是一个完全无关的错误,每当我尝试添加任何PPA时都会出现,对此感到抱歉!好了,现在我已经添加了HEIF的两个PPA(ppa:strukturag/libheif和ppa:strukturag/libde265),我已经安装了heif-gdk-pixbuf,但它仍然不起作用 - 当我尝试用eog打开一个HEIF文件时,它显示“无法加载图像'IMG_2171.HEIC'。无法识别的图像格式。” - weronika
@weronika 不用担心!- 很有趣,你遇到了这个错误。这是一个有效的HEIF图片吗?也许你可以尝试另一张图片。你是用Eye of Gnome打开的吗?还是其他的图片查看器? - Filbuntu
1今天我又试了一次,这次终于成功了,尽管我只是在同一个终端里重复昨天的那个命令...唉,不过现在它能用了,谢谢你对我奇怪问题的耐心! - weronika
我升级到了Kubuntu 21.04版本,其中包含了KDE Frameworks 5.80,但是Gwenview和Kdenlive仍然无法打开使用三星手机拍摄的HEIC文件。 - 007
@007 很遗憾它不能直接使用。还有其他使用 Kubuntu 21.04 的用户有什么提示吗?Kubuntu 21.04 是否使用 KDE Gear 21.04,根据公告中的说明,应该包含带有HEIF和HEIC格式的 Gwenview。 - Filbuntu
@Filbuntu,有没有办法检查已安装的KDE Gear版本?Kinfocenter没有相关信息。我还发起了一个关于21.04的 单独问题 - 007
@eddygeek 再次感谢您改进答案! - Filbuntu
2谢谢你! - Ryan

在Ubuntu 20.04 Focal Fossa上:

$ sudo apt install heif-gdk-pixbuf heif-thumbnailer gimagereader gpicview

然后在文件管理器中找到一个HEIC文件,右键点击,选择“属性”,然后选择“打开方式”,再选择“图像查看器”(如果有两个,请选择带有更多颜色图标的那个),然后选择“设为默认”(或者如果只有这个选项,则选择“添加”)。 example of setting the HEIF MIME type 之后,您可以双击HEIF文件来查看它们。

example of an HEIF image opened from the file manager

旧版Ubuntu LTS:

在Ubuntu 18.04上,您可以使用sudo snap install gimp命令安装最新版本(截至2019年5月为2.10.8),该版本可以打开和编辑HEIC文件。

在Ubuntu 18.04上还有一个命令行工具可以转换HEIC文件:

sudo apt install libheif-examples
heif-convert IMG_1605.HEIC IMG_1605.jpg

注意:你必须使用小写的.jpg,否则它会抱怨无法识别文件格式。那个提示信息几乎和软件包名称一样误导人,通过这两个papercuts我很容易理解为什么很少有人能够弄清楚如何使用这个工具。
对于任何怀疑这是官方Ubuntu软件包的人
user@host:~/Desktop$ dpkg -s libheif-examples 
Package: libheif-examples
Status: install ok installed
Priority: optional
Section: video
Installed-Size: 91
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Source: libheif
Version: 1.1.0-2
Depends: libheif1 (= 1.1.0-2), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libstdc++6 (>= 5.2)
Description: ISO/IEC 23008-12:2017 HEIF file format decoder - examples
 libheif is an ISO/IEC 23008-12:2017 HEIF file format decoder. HEIF is a new
 image file format employing HEVC (h.265) image coding for the best compression
 ratios currently possible.
 .
 Sample applications using libheif are provided by this package.
Original-Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Homepage: http://www.libheif.org

好的,现在是这个笑话的点睛之笔。 ;-)
你可以使用fuseflt或yacufs FUSE文件系统来挂载你的图片文件夹,并自动进行临时缓存转换你的HEIC文件,这样所有的Linux桌面应用程序都可以打开HEIC文件,而不需要知道它们正在这样做。
下面的Mark Deven说他只需要通过aptitude安装libheif就能得到这些命令,尽管他没有提到他使用的发行版是哪一个。

安装完这些软件包后,找不到libheif-examples和heif-convert命令。 - Mark Deven
1我已经通过使用aptitude并只安装libheif成功使其正常工作。 - Mark Deven
1就我所知,Debian 10 (Buster) 在其标准软件仓库中包含了libheif-examples软件包,该软件包将libheif1作为其依赖项。请注意,由于我仍然(遗憾地)停留在**Debian 7 (Wheezy)**上,因此我尚未测试过该软件包。 - Digger
Ubuntu 18.04目前(2019年5月)的GIMP版本为2.8.22,而不是2.10,因此在Ubuntu的原版GIMP中没有HEIF支持。 - Óscar
1@Óscar:请再次阅读帖子的第一行snap是现成的。gimpsnap一起提供。通过snap,18.04的当前版本为2.10.10 - Wil
@Wil 你是对的,我没有看到snap命令,抱歉。 - Óscar
1对于Ubuntu 20.04,现在在GNOME图像查看器(Eye of GNOME - eog)中可以正常工作。 - adasiko
确实如此,但我也发现eog不稳定,在查看某些照片时会出现段错误,生成一些缩略图时会死机。虽然它比gpicview更先进,但也有一些问题。可惜的是,gthumb在19.04上能用,但在20.04上不能用。 - Wil
我在20.04版本中不需要gimagereader,它为什么会出现在列表中呢? - bjrne
@bjrne 因为它是其中一个能够打开 HEIF 格式的应用程序,那就是问题所在。 - Wil
我理解,但截图中的那个是gpicview,如果我没有记错的话,而且它可以在不安装gimagereader的情况下运行。也许可以加一句说明有两种选择,但其中一种就足够了?或者说图片是用gpicview打开的? :) - bjrne

GIMP 2.10.2 现在可以读取、写入和编辑 .HEIC 容器文件,而 ImageMagick 则可以将 .HEIC 图像容器文件转换为其他格式。


虽然不是真正的本地转换,但可以使用Dropbox查看.heic图像。
只需将所需图像上传到您的Dropbox帐户,然后单击所需图像以查看它。您甚至可以右键单击图像,将.jpeg文件保存回本地计算机,以JPEG格式保存。(注意:不要点击Dropbox的下载按钮,因为那只会获取原始的.HEIC文件。)

1我给你点赞的原因只是因为将照片同步到云端是一个很好的主意,将它们保存为HEIC格式可以节省空间而不降低质量,通过浏览器访问它们意味着你可以更轻松地访问和分享它们。所以即使它并没有真正回答问题,这仍然是三赢的局面。 - Wil

这是我将.HEIC文件转换为.jpeg的方法。
  1. 下载并安装 tifig 包。
  2. wget https://github.com/monostream/tifig/releases 
    gunzip tifig-static-0.2.2.tar.gz #或者下载的 tifig 文件名
    
  3. 使 tifig 可执行。
  4. mv ./tifig ~/tools/tifig
    sudo chmod +x  ~/tools/tifig
    
  5. 现在可以使用 tifig 转换你的 .heic 文件了。
  6. for f in *.HEIC; do mv "$f" "\`echo $f | sed s/.HEIC/.heic/\`"; done
    for file in *.heic; do echo $file | xargs ~/tools/tifig -v -p $file ${file%.heic}.jpg; done
    

参考文献:


你真的需要在转换之前将它们从.HEIC重命名为.heic吗? - RonJohn