[Debian12] How to sourcebuild install ImageMagick

imagemagickインストール後のdelegate Debian
imagemagickインストール後のdelegate

Debian12へImageMagickをソースからインストールするシェルスクリプトを作成してみました。
シェルスクリプト実行後、Delegates一覧に

bzlib
djvu
fontconfig
freetype
heic
jbig
jng
jp2
jpeg
lcms
lqr
ltdl
lzma
openexr
png
raw
tiff
webp
wmf
x
xml
zlib

が表示されます。
また、キャッシュサイズを二つ指定できます。

以下のサイトからImageMagickソースファイルをダウンロードします。
https://imagemagick.org/script/install-source.php#linux

シェルスクリプト(debian12_imagemagick_install.sh)を新規作成します。
### 環境に合わせた修正箇所ここから ### 部分を修正します。

debian12_imagemagick_install.sh
#!/bin/bash

# このシェルスクリプト実行前に、以下のofficial ImageMagickからImageMagick
# ソースファイルを / へダウンロードしておいてください。
# https://imagemagick.org/script/install-source.php#linux
# このシェルスクリプト実行前に### 環境に合わせた修正箇所ここから ### を修正
# してください。

### 環境に合わせた修正箇所ここから ###
# IMGMA_VER へImageMagick のバージョンを入れてください。
IMGMA_VER="7.1.1-15"
# /etc/ImageMagick-6/policy.xml 中<policy domain="resource" name="memory" value="256MiB"/> value値
MEM_VLU="2048"
# /etc/ImageMagick-6/policy.xml 中<policy domain="resource" name="map" value="512MiB"/>  value値
MAP_VLU="4096"
### 環境に合わせた修正箇所ここまで ###

cd

sudo apt update ; sudo apt -y upgrade 

# 1. インストール
magick --version &> /dev/null
if [ $? -ne 0 ] ; then
        echo "imagemagick インストールします"
	sudo apt -y install build-essential libjpeg-dev libpng-dev libtiff-dev libde265-dev libdav1d-dev libtool libmagickcore-dev checkinstall curl zip unzip tar libpng16-16 libltdl-dev libheif-dev libraw-dev libopenjp2-tools libopenjp2-7-dev libjpeg-turbo-progs libfreetype6-dev libopenexr-dev libwebp-dev libgif-dev make
	tar xvzf ImageMagick.tar.gz
	cd ImageMagick-$IMGMA_VER
	./configure --with-modules --enable-file-type --with-quantum-depth=32 --with-jpeg=yes --with-png=yes --with-gif=yes --with-webp=yes --with-heic=yes --with-raw=yes --with-tiff=yes --with-openjp2 --with-freetype=yes --with-webp=yes --with-openexr=yes --with-gslib=yes --with-gif=yes --with-perl=yes --with-jxl=yes
	make
	sudo make install

	# ダイナミックリンカランタイムバインディングを設定
	sudo ldconfig /usr/local/lib

        # /etc/ImageMagick-6/policy.xml バックアップ
	sudo cp /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xml.org
else
        echo "imagemagick インストール済みです"

        # /etc/ImageMagick-6/policy.xml.org がない場合の処理
        if [ ! -e /etc/ImageMagick-6/policy.xml.org ]; then
                # /etc/ImageMagick-6/policy.xml バックアップ
                sudo cp /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xml.org
        fi
fi

# /etc/ImageMagick-6/policy.xml 初期化
sudo cp /etc/ImageMagick-6/policy.xml.org /etc/ImageMagick-6/policy.xml

# /etc/ImageMagick-6/policy.xml 修正
sudo sed -i 's/policy domain="resource" name="memory" value="256/policy domain="resource" name="memory" value="'$MEM_VLU'/g' /etc/ImageMagick-6/policy.xml
sudo sed -i 's/<policy domain="resource" name="map" value="512/<policy domain="resource" name="map" value="'$MAP_VLU'/g' /etc/ImageMagick-6/policy.xml

# インストールパス・バージョン表示
which convert
convert -version

convert -list format | grep HEIC
convert -list coder | grep HEIC

シェルスクリプト(debian12_imagemagick_install.sh)を実行します。

$ sudo chmod +x debian12_imagemagick_install.sh
$ ./debian12_imagemagick_install.sh
<省略>
/usr/local/bin/convert
Version: ImageMagick 7.1.1-15 Q32-HDRI aarch64 21298 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(4.5) 
Delegates (built-in): bzlib djvu fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr png raw tiff webp wmf x xml zlib
Compiler: gcc (13.2)
     AVIF  HEIC      rw+   AV1 Image File Format (1.16.2)
     HEIC  HEIC      rw+   High Efficiency Image Format (1.16.2)
     HEIF  HEIC      rw+   High Efficiency Image Format (1.16.2)
AVIF            HEIC
HEIF            HEIC
sample_PNG.png
sample_PNG.png
sample_JPG.jpg
sample_JPG.jpg
Imagemagickで変換後のファイルを含む一覧
png を HEIC へコマンドで変換

sample_PNG.pngをHEICへ変換するコマンドは以下の通りです。
sample_PNG.heicが作成されます。

$ convert sample_PNG.png sample_PNG.heic
ファイル名ファイルサイズ
sample_PNG.png20039784バイト
sample_PNG.heic949056バイト
png を AVIF へコマンドで変換

sample_PNG.pngをAVIFへ変換するコマンドは以下の通りです。
sample_PNG.avifが作成されます。

$ convert sample_PNG.png sample_PNG.avif
ファイル名ファイルサイズ
sample_PNG.png20039784バイト
sample_PNG.avif445545バイト
png を JPEG-2000 へコマンドで変換

sample_PNG.pngをJPEG-2000 へ変換するコマンドは以下の通りです。
sample_PNG.jp2が作成されます。

$ convert sample_PNG.png sample_PNG.jp2
ファイル名ファイルサイズ
sample_PNG.png20039784バイト
sample_PNG.jp215248301バイト
png を jpg へコマンドで変換

sample_PNG.pngをjpg へ変換するコマンドは以下の通りです。
sample_PNG.jpgが作成されます。

$ convert sample_PNG.png sample_PNG.jpg
ファイル名ファイルサイズ
sample_PNG.png20039784バイト
sample_PNG.jpg3315040バイト
png を openexr へコマンドで変換

sample_PNG.pngをopenexr へ変換するコマンドは以下の通りです。
sample_PNG.openexrが作成されます。

$ convert sample_PNG.png sample_PNG.openexr
ファイル名ファイルサイズ
sample_PNG.png20039784バイト
sample_PNG.openexr17257831バイト

jpg を HEIC へコマンドで変換

sample_JPG.jpgをHEICへ変換するコマンドは以下の通りです。
sample_JPG.heicが作成されます。

$ convert sample_JPG.jpg sample_JPG.heic
ファイル名ファイルサイズ
sample_JPG.jpg3608822バイト
sample_JPG.heic939557バイト
jpg を AVIF へコマンドで変換

sample_JPG.jpgをAVIFへ変換するコマンドは以下の通りです。
sample_JPG.avifが作成されます。

$ convert sample_JPG.jpg sample_JPG.avif
ファイル名ファイルサイズ
sample_JPG.jpg3608822バイト
sample_JPG.avif447340バイト
jpg を JPEG-2000 へコマンドで変換

sample_JPG.jpgをAVIFへ変換するコマンドは以下の通りです。
sample_JPG.jp2が作成されます。

$ convert sample_JPG.jpg sample_JPG.jp2
ファイル名ファイルサイズ
sample_JPG.jpg3608822バイト
sample_JPG.jp210320150バイト
jpg を openexr へコマンドで変換

sample_JPG.jpgをAVIFへ変換するコマンドは以下の通りです。
sample_JPG.openexrが作成されます。

$ convert sample_JPG.jpg sample_JPG.openexr
ファイル名ファイルサイズ
sample_JPG.jpg3608822バイト
sample_JPG.openexr3599011バイト

HEICが扱えるImageMagickをインストールしたサーバーで稼働しているNextCloudにてHEICプレビューできるようにするには、NextCloudのconfig.phpに以下を含ませてください。
その後、apache/nginxを再起動します。

NextCloudのconfig.php
  'enable_previews' => true,
  'enabledPreviewProviders' => 
  array (
    0 => 'OC\\Preview\\TXT',
    1 => 'OC\\Preview\\MarkDown',
    2 => 'OC\\Preview\\OpenDocument',
    3 => 'OC\\Preview\\PDF',
    4 => 'OC\\Preview\\MSOffice2003',
    5 => 'OC\\Preview\\MSOfficeDoc',
    6 => 'OC\\Preview\\PDF',
    7 => 'OC\\Preview\\Image',
    8 => 'OC\\Preview\\Photoshop',
    9 => 'OC\\Preview\\TIFF',
    10 => 'OC\\Preview\\SVG',
    11 => 'OC\\Preview\\Font',
    12 => 'OC\\Preview\\MP3',
    13 => 'OC\\Preview\\Movie',
    14 => 'OC\\Preview\\MKV',
    15 => 'OC\\Preview\\MP4',
    16 => 'OC\\Preview\\HEIF',
    17 => 'OC\\Preview\\HEIC',
  ),
タイトルとURLをコピーしました