RailsのアプリケーションでHEICファイルをPDFファイルに変換する際にエラーになり解消までかなりハマったので対応方法を記載
環境
OS: Amazon linux
ImageMagick 7.1.0-7
発生した事象
MiniMagick::Imageでheicファイルを扱おうとしたときにエラー
irb(main):003:0> MiniMagick::Image.open(tenant_applicant.tenant_applicant_identifications.second.identification_file.file.url)
[0.01s] magick identify /tmp/mini_magick20230309-32496-mqc52m.heic
Traceback (most recent call last):
1: from (irb):3
MiniMagick::Invalid (`magick identify /tmp/mini_magick20230309-32496-mqc52m.heic` failed with error:)
identify: no decode delegate for this image format `HEIC' @ error/constitute.c/ReadImage/572.
どうやらMinimagickではなくImagemMagickの問題のよう
https://github.com/minimagick/minimagick/issues/538
確認する
$ convert --version
Version: ImageMagick 7.1.0-7 Q16-HDRI x86_64 2021-09-04 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib fontconfig freetype jng jpeg lzma png tiff x xml zlib
Compiler: gcc (7.3)
確かにDelegates
のところにheicがない
調べているとlibde265とlibheifをインストールすればいいという記事を見かけインストールしようとしたのですがパッケージが見当たらない。
https://github.com/ImageMagick/ImageMagick/issues/1470
# yum list | grep libheif
// 何も表示されない
# yum list | grep libde265
// 何も表示されない
yumでインストールできないのでソースコードからインストールしていきます。
libde265インストール
# git clone https://github.com/strukturag/libde265.git -b v1.0.11 libde265-1.0.11
# cd libde265-1.0.11
# ./autogen.sh
# ./configure
# make
# make install
libheifインストール
# git clone https://github.com/strukturag/libheif.git -b v1.15.1 libheif-1.15.1
# cd libheif-1.15.1
# ./autogen.sh
# ./configure
# make
# make install
# which heif-convert
/usr/local/bin/heif-convert
Imagemagickでheicを対応させる
# cd imagemagickのディレクトリ
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# pkg-config libheif --modversion
1.15.1
# ./configure
...
Delegate library configuration:
...
HEIC --with-heic=yes yes
...
# make
# make install
# convert --version
Version: ImageMagick 7.1.0-7 Q16-HDRI x86_64 2021-09-04 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib fontconfig freetype heic jng jpeg lzma png tiff x xml zlib
Compiler: gcc (7.3)
以上。
結構ハマったので誰かのお役に立てれば幸いです。