
HEIC是目前苹果iPhone手机拍摄照片时的默认图像存储格式。与JPG相比,HEIC占用的空间更小,画质更无损。
当用户上传HEIC文件到Nextcloud时,在web页面中并不能产生HEIC的缩略图,给用户查看带来不便。

测试设备系统信息:
- 操作系统:Ubuntu 18.04 LTS 64Bit
- NextCloud:NextCloud Server 16.0.0
- 数据库:MariaDB
- PHP版本:7.2
- WebServer:Apache2
这个问题是由以下几个原因导致的:
- ubuntu 18用apt命令安装的ImageMagick默认为6.x版本,并不支持HEIC
- ubuntu 18默认安装的php-imagick也只与 ImageMagick 6.x匹配
- ubuntu 18默认安装的libheic-dev库文件版本比较旧
解决步骤如下:
- 删除旧版ImageMagick、php-imagick、libheic-dev
- 通过PPA添加libheic最新源
- apt安装libheic-dev
- 下载ImageMagick 7和php-imagick3.4.4的软件包
- 通过make编译安装以上软件包
- 修改php.ini文件,加载 php-imagick
- 重启apache2
1. 删除旧版ImageMagick、php-imagick、libheic-dev
ssh连接服务器,使用root用户运行如下命令。请注意某些命令行最后的“*”号,也必需加上,否则无法删除干净。
apt remove imagemagick*
apt autoremove
apt remove php-imagick
apt remove libheif*
apt autoremove
2. 通过PPA添加libheic最新源,并更新数据源
add-apt-repository ppa:strukturag/libheif
apt update
3. apt安装libheic-dev,版本应为1.4.x
apt install libheif-dev
4. 下载ImageMagick 7和php-imagick3.4.4的软件包,并解压,解压后出现ImageMagick-7.0.8-44及imagick-3.4.4两个文件夹
cd /var/tmp
wget https://www.imagemagick.org/download/ImageMagick.tar.gz
wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar zxvf ImageMagick.tar.gz
tar zxvf imagick-3.4.4.tgz
5. 通过make编译安装以上软件包
apt-get install build-essential autoconf git-core
apt-get build-dep imagemagick libde265 libheif
--------------------------------------
cd /var/tmp/ImageMagick-7.0.8-44
./configure --with-heic=yes
make -j 4
make install
ldconfig
--------------------------------------
cd /var/tmp/imagick-3.4.4
phpize \\(如提示“Command 'phpize' not found, but can be installed with:”,请先安装php7.2-dev,再运行phpize)
./configure --with-imagick=/opt/local
make
make install
6. 修改php.ini文件,加载 php-imagick
nano /etc/php/7.2/apache2/php.ini
去到文件末尾,添加配置项extension=imagick.so

7. 重启apache2
service apache2 restart
敲入命令mogrify -version查看ImageMagick信息,ImageMagick中已包含heic。

再次刷新页面,heic缩略图呈现眼前,问题解决。


如果做了以上操作仍无法显示,请查看一下nextcloud的config目录下的config.php文件,是否已添加 OC\Preview\HEIC 一项内容,如下图。
