2025.05.21
ImageMagickによる画像の拡大縮小・・・(ubuntu)
旅をした後に写真撮影した画像の多くを掲載するブログを作成するため、ImageMagickに内包するperlmagickを使って画面表示のhtml文を半自動化するプログラムをperlで作成して用いていた。最初に動かしたのはFreeBSD下であったが、その後はWindows下で動かしていたが、Windowsのアップデート等で損なわれた。
そこで、今回、外付けのUSB接続のSSDにUbuntuを入れて、ImageMagick/PerlMagickを入れてブログ作成ツールを動かそうとしたが、gifファイルは画像の拡大縮小ができるが、jpgファイルは機能せず、散々苦労してようやく動かせたので、その作業の概要を記すこととした。Ubuntu22.04をインストールしたが、これは何ら問題は生じなかった。
(1) 前処理
ubuntuはインストールしただけでは、gccもmakeも入っていないので、
まず入れておく。
また、ubuntuはshellとして、bashが使われているが、途中cshも使うので
これも入れておく。(bashでもsetenvの設定はできるが、筆者は知らないので)
nakxx> sudo -i <ーーーー rootになる [sudo] nakxx のパスワード: xxxxxx # apt install build-essential <ーーーー make、gccを入れる # apt install csh <ーーーー csh shellを入れる
(2) libjpegをあらかじめインストールしておく
# cd /usr/local/src # wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz # tar xvzf jpegsrc.v8c.tar.gz # cd jpeg-8c # ./configure --enable-shared <ーー -enable-sharedを指定しないとPerlで使うLibjpegが作られない # make # make install
(3) ImageMagickのインストール
ImageMagickのページからsourceファイルをダウンロードし
て/usr/local/srcに置く。最新版はImageMagick-7.1.1-47であった。
# cd /usr/local/src # tar xvzf ImageMagick.tar.gz # cd ImageMagick-7.1.1-47 # csh <ーーー shellをcshに切り替え # setenv CPPFLAGS -I/usr/local/include # setenv LDFLAGS -L/usr/local/lib # exit <ーーー shellをbashに戻す # ./configure --enable-lzw=yes |& tee configure.log # make # make install configureの最後でJPEG v1 --with-jpeg=yes yes なら成功。 config.logでac_cv_lib_jpeg_jpeg_read_header='yes' なら成功。
(4) PerlMagickのインストール
最初の位置はImageMagickをtar xvzfで展開した位置から始める。
いきなりPerMagickのディレクトリーに行くとエラーとなるので要注意。
このことを行っていないインストール説明ページが多いので注意を要する。
# ./configure --with-quantum-depth=16 --with-perl=/usr/bin/perl # make perl-sources # cd PerlMagick/ # /usr/bin/perl Makefile.PL # make # make install
(5) 関連ライブラリーのインストール
test用の画像処理プログラムでテストして分かったことだが、CGI.pm、
Image/Size.pm、Jcode.pmも必要である。
以下にインストール方法を書いておく。
# apt install libcgi-session-perl <ーーーーーーー CGI.pmのインストール # apt install libimage-size-perl <ーーーーーーー Image/Sizeのインストール # apt-get install libcode-pm-perl <ーーーーーーー Jcode.pmのインストール (コマンドがapy-get install)となる事に注意。
(6) サンプル
#!/usr/bin/perl use CGI; use Image::Magick; use Image::Size; use Jcode; $imagesize=1024; <------------- 目的の画像サイズの横幅を指定(縦幅は自動計算) $srcimage=(path to Image holder)/abcd.jpg; <-----------パスを含めた画像のファイル名 ($imgx, $imgy) = imgsize($srcimage); $iwidth = $imagesize; $iheight = ($imgy / $imgx) * $iwidth; $iwidth = int($iwidth); $iheight = int($iheight); $img = Image::Magick->new; $img->Read("$srcimage"); $img->Set(quality=>90); $img -> Resize(width => $iwidth,height => $iheight); $img->Write("$srcimage"); undef $img; exit();
ImageMagickを入れると、ubuntu22.04のGUIでの「設定」が表示されなくなる、その他の項目は全部調べていないが、問題なさそうだ。
何とかならないかと、googleで検索すると、ImageMagickをアンインストーしろとのこと。何をか言わんやである。