![見出し画像](https://assets.st-note.com/production/uploads/images/29566950/rectangle_large_type_2_275fb02e94dd139e382802aac4cec354.png?width=1200)
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
参考:ビルトイン画像
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
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
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
複数の画像を合成
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
rose.jpg
rose-over.png
例)円形の赤い図形を生成し、とハイライト(白い円形の図形にぼかしをかけたもの)を作成し、円形の赤い図形とハイライトを重ね合わせてそれが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
white-highlight.png
red-ball.png
変換後のファイル名にわかりやすく幅と高さのサイズを含ませる
convert rose.jpg -set filename:area '%wx%h' 'rose-%[filename:area].png'
rose-70x46.png
複数画像を一括変換
例)複数画像を一括変換(フォルダ内の拡張子pngのファイルを、アスペクト比を変えずに幅を1280ピクセルでサブフォルダに出力)
mkdir output_dir
mogrify -path output_dir -resize 1280x *.png
これでドンキPCでも戦えます(何に?)
ドンキPC(MUGA ストイックPC2)をChromebook化する方法
※この記事もChromebook化したドンキPCで書いてます。
よろしければサポートお願いいたします。クリエイターとしての活動費とさせていただきます。