見出し画像

Chromebook化したドンキPCにImageMagick®をインストール

画像の加工や形式の変換、レタッチ等は、コマンドツールで行うと作業が捗るケースがあります。

ImageMagick®を使うことで、一般的なアプリよりメモリの消費量を抑えつつ手早く画像の修正等が行える場合があります。

同じ加工や変換を複数のファイルに行う場合も作業時間の短縮を見込めます。

具体的になにができる?

ImageMagick® を使用して、ビットマップ画像の作成、編集、合成、変換を行います。PNG、JPEG、GIF、HEIC、TIFF、DPX、EXR、WebP、Postscript、PDF、および SVG を含む様々なフォーマット (200 以上) の画像を読み書きすることができます。ImageMagick を使用して、画像のサイズ変更、反転、ミラーリング、回転、歪曲、切抜、変形、画像の色の調整、様々な特殊効果の適用、テキスト、線、多角形、楕円、ベジエ曲線の描画を行うことができます。

脆弱性について

ImageMagickのWeb記事を検索すると、脆弱性を指摘し使用を避けるよう促す記事がよく見つかります。

ローカル環境で使う分にはそれほど心配ないようです。

 なおImageMagickは、その高機能さからWebサーバ側での画像処理に使われることも多い。しかし、Webサーバで外部ファイルを扱うプログラムは、セキュリティホールになりやすい。ImageMagickには、こうした利用方法での脆弱性(ぜいじゃくせい)が知られており、これを警告するWeb記事も少なくない。
 ただローカル環境で利用するのと、Webサーバで利用するのでは環境が異なる。ローカルで直接ImageMagickを利用する場合には、セキュリティについてそれほど心配する必要はないだろう。ただし、既知の脆弱性が解消されている最新版を利用するように心掛けること。

引用元

Webサーバーで使う場合も適切に制限をかければリスクを抑えることができます。

ImageMagick 公式サイト

Linux環境の初期設定

過去の記事、「Chromebook化したドンキPCでLinux (ベータ版)を利用する」の通り、Linux (ベータ版)のセットアップが終わっていることが前提です。


インストール

インストール済みのパッケージの更新

sudo apt update && sudo apt upgrade -y

インストール

sudo apt install imagemagick 

バージョン確認

convert -version

Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

画像を変換する

ImageMagickのビルトイン画像(rose:)を利用

convert rose: rose.jpg

rose.jpg

画像2

参考:ビルトイン画像

rose.jpg情報

identify rose.jpg
rose.jpg JPEG 70x46 70x46+0+0 8-bit sRGB 2664B 0.000u 0:00.000

rose.jpg詳細な情報

identify -verbose rose.jpg
Image: rose.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 70x46+0+0
Units: Undefined
Colorspace: sRGB
Type: TrueColor
Base type: Undefined
Endianess: Undefined
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Channel statistics:
Pixels: 3220
Red:
min: 31 (0.121569)
max: 255 (1)
mean: 145.539 (0.570742)
standard deviation: 69.2069 (0.2714)
kurtosis: -1.38853
skewness: 0.139881
entropy: 0.970555
Green:
min: 26 (0.101961)
max: 255 (1)
mean: 89.2255 (0.349904)
standard deviation: 52.4742 (0.205781)
kurtosis: 2.59615
skewness: 1.80627
entropy: 0.870484
Blue:
min: 18 (0.0705882)
max: 255 (1)
mean: 80.4019 (0.315301)
standard deviation: 54.9342 (0.215428)
kurtosis: 2.93385
skewness: 1.95523
entropy: 0.854176
Image statistics:
Overall:
min: 18 (0.0705882)
max: 255 (1)
mean: 105.055 (0.411982)
standard deviation: 58.8718 (0.23087)
kurtosis: -0.22296
skewness: 1.05251
entropy: 0.898405
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: white
Border color: srgb(223,223,223)
Matte color: grey74
Transparent color: black
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 70x46+0+0
Dispose: Undefined
Iterations: 0
Compression: JPEG
Quality: 92
Orientation: Undefined
Properties:
date:create: 2020-06-24T17:54:03+09:00
date:modify: 2020-06-24T17:54:03+09:00
jpeg:colorspace: 2
jpeg:sampling-factor: 1x1,1x1,1x1
signature: 16f94485d298b48342a072f0e74b7096bea65023f9720b1edfbba74edb9038c8
Artifacts:
filename: rose.jpg
verbose: true
Tainted: False
Filesize: 2664B
Number pixels: 3220
Pixels per second: 322000B
User time: 0.000u
Elapsed time: 0:01.009
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
convert rose.jpg rose.png

rose.png

画像3

rose.pngの情報

identify rose.png
rose.png PNG 70x46 70x46+0+0 8-bit sRGB 7144B 0.000u 0:00.000

rose.pngの詳細情報

identify -verbose rose.png
Image: rose.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 70x46+0+0
Units: Undefined
Colorspace: sRGB
Type: TrueColor
Base type: Undefined
Endianess: Undefined
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Channel statistics:
Pixels: 3220
Red:
min: 31 (0.121569)
max: 255 (1)
mean: 145.539 (0.570742)
standard deviation: 69.2069 (0.2714)
kurtosis: -1.38853
skewness: 0.139881
entropy: 0.970555
Green:
min: 26 (0.101961)
max: 255 (1)
mean: 89.2255 (0.349904)
standard deviation: 52.4742 (0.205781)
kurtosis: 2.59615
skewness: 1.80627
entropy: 0.870484
Blue:
min: 18 (0.0705882)
max: 255 (1)
mean: 80.4019 (0.315301)
standard deviation: 54.9342 (0.215428)
kurtosis: 2.93385
skewness: 1.95523
entropy: 0.854176
Image statistics:
Overall:
min: 18 (0.0705882)
max: 255 (1)
mean: 105.055 (0.411982)
standard deviation: 58.8718 (0.23087)
kurtosis: -0.22296
skewness: 1.05251
entropy: 0.898405
Rendering intent: Perceptual
Gamma: 0.45455
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: white
Border color: srgb(223,223,223)
Matte color: grey74
Transparent color: black
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 70x46+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Properties:
date:create: 2020-06-24T18:07:06+09:00
date:modify: 2020-06-24T18:07:06+09:00
png:bKGD: chunk was found (see Background color, above)
png:cHRM: chunk was found (see Chromaticity, above)
png:gAMA: gamma=0.45455 (See Gamma, above)
png:IHDR.bit-depth-orig: 8
png:IHDR.bit_depth: 8
png:IHDR.color-type-orig: 2
png:IHDR.color_type: 2 (Truecolor)
png:IHDR.interlace_method: 0 (Not interlaced)
png:IHDR.width,height: 70, 46
png:sRGB: intent=0 (Perceptual Intent)
png:text: 2 tEXt/zTXt/iTXt chunks were found
signature: 16f94485d298b48342a072f0e74b7096bea65023f9720b1edfbba74edb9038c8
Artifacts:
filename: rose.png
verbose: true
Tainted: False
Filesize: 7144B
Number pixels: 3220
User time: 0.000u
Elapsed time: 0:01.000
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
rm rose.png
convert rose.jpg -resize 50% rose.png

rose.png

画像4

rose.pngの情報

identify rose.png
rose.png PNG 35x23 35x23+0+0 8-bit sRGB 2219B 0.010u 0:00.009

Magick というテキストの縁取り付き影付きのpng画像を生成

convert -size 320x85 canvas:none -font Bookman-DemiItalic -pointsize 72 \
 -draw "text 25,60 'Magick'" -channel RGBA -blur 0x6 -fill darkred -stroke magenta \
 -draw "text 20,55 'Magick'" fuzzy-magick.png

fuzzy-magick.png

画像1

複数の画像を合成

2つの画像を重ね合わせる

convert -size 48x48 canvas:none -fill yellow -draw 'circle 24,24 6.4,19.2' yellow-circle.gif
composite -gravity center yellow-circle.gif rose.jpg rose-over.png

yellow-circle.gif

画像5

rose.jpg

画像6

rose-over.png

画像7

例)円形の赤い図形を生成し、とハイライト(白い円形の図形にぼかしをかけたもの)を作成し、円形の赤い図形とハイライトを重ね合わせてそれが3次元の球体に見える画像を生成します。

convert -size 70x70 canvas:none -fill red -draw 'circle 35,35 10,30' red-circle.png
convert -size 70x70 canvas:none -draw 'circle 35,35 35,20' -negate \
-channel A -gaussian-blur 0x8 white-highlight.png
composite -compose atop -geometry -13-17 white-highlight.png red-circle.png red-ball.png

red-circle.png

画像8

white-highlight.png

画像9

 red-ball.png

画像10

変換後のファイル名にわかりやすく幅と高さのサイズを含ませる

convert rose.jpg -set filename:area '%wx%h' 'rose-%[filename:area].png'

rose-70x46.png

画像11

複数画像を一括変換

例)複数画像を一括変換(フォルダ内の拡張子pngのファイルを、アスペクト比を変えずに幅を1280ピクセルでサブフォルダに出力)

mkdir output_dir
mogrify -path output_dir -resize 1280x *.png

これでドンキPCでも戦えます(何に?)

ドンキPC(MUGA ストイックPC2)をChromebook化する方法

※この記事もChromebook化したドンキPCで書いてます。

よろしければサポートお願いいたします。クリエイターとしての活動費とさせていただきます。