複数画像の一括変換にgimpのScript_Fuを使うよりも、ずっと簡単に手軽にできそうだ。 というか、gimpメモのScript_Fuを使った一括画像変換のスクリプトをしばらくぶりに使ってみたら、gimpのバージョンアップのせいか、使えなくなっていた。 Script_Fuスクリプトを見直すよりも、ImageMagickを利用した方が手軽で簡単かなと。
セキュリティ対策で新しいバージョンではepsやpdfの変換ができなくなったらしい。
<!-- disable ghostscript format types --> <policy domain="coder" rights="none" pattern="PS" /> <policy domain="coder" rights="none" pattern="EPI" /> <policy domain="coder" rights="none" pattern="PDF" /> <policy domain="coder" rights="none" pattern="XPS" />
上記をコメントに入れる。
<!-- disable ghostscript format types <policy domain="coder" rights="none" pattern="PS" /> <policy domain="coder" rights="none" pattern="EPI" /> <policy domain="coder" rights="none" pattern="PDF" /> <policy domain="coder" rights="none" pattern="XPS" /> -->
display hoge.jpg
巨大な画像の場合、表示サイズを指定して表示
display -geometry 400x300 hoge.jpg
もっとも、gimpの方が巨大な画像を安定して開けるかもしれない。 eogは巨大なファイルは開けない。 いずれ、ビューワー類で巨大画像を開く場合は、 ターミナルから&をつけずに起動し、かたまっている場合はcntl+cで強制終了。
identify hoge.jpg
convert hoge.jpg hoge.eps
実に簡単。
解像度が落ちるので以下のようにする
convert -density 600 hoge.pdf hoge.eps
a01.jpg, a02.jpg, a03.jpg...をつなげてhoge.gifというgif動画を作る。
convert a*.jpg hoge.gif
縦横のドット数をそれぞれ50%縮小
convert -resize 50% hoge.jpg hoge50.jpg convert -resize 224x224 mae.jpg ato.jpg
一括の場合
for a in *.jpg; do convert -resize 50% $a `echo $a | sed s/.jpg/_50.jpg/g` ; done
640x480の画像の上から640x400の部分を切り出したければ、
convert -crop 640x400+0+0 hoge.jpg kiritori.jpg
cropの後に、切り取り後の画像の横ピクセルx縦ピクセル+元画像の切り取り位置の左からのピクセル数+上からのピクセル数
convert -rotate +90 hoge.jpg hoge90.jpg
時計回りなら+90(または90)、反時計回りなら-90
デジカメなどの大文字の拡張子を小文字にしたい場合など。
for a in *.JPG; do cp $a `echo $a | sed s/.JPG/.jpg/g` ; done
ここを 参考にしたが、このやり方で以下のようにいろいろできる。
デジカメで縦長に撮影した画像は、最近は、顔がちゃんと見える方向に 自動回転されたりするが、それは、jpegの拡張機能で回転情報を入れているようで、 epsに変換すると、横向きに戻ってしまったりするので、やっぱり 複数の写真を一括で回転したいことはある。
for a in *.jpg; do convert -rotate 90 $a `echo $a | sed s/.jpg/_90.jpg/g` ; done
for a in *.jpg; do convert $a `echo $a | sed s/.jpg/.eps/g` ; done
これはconvertではなくて、ffmpegを使うのだけど、以下のように書いたファイルを作って、実行属性を与えて実行。 gthumbのウェブアルバムが最近のバージョンとubuntu20以降?の環境では、動画のサムネイルを生成できないようなので。
for VIDEO in $(ls *.mp4 | sed 's/.mp4//') do ffmpeg -i ${VIDEO}.mp4 -ss 6 -vframes 1 -f image2 -s 159x119 ${VIDEO}.mp4.small.jpeg done
for a in *.MOV; do ffmpeg -i $a -vf thumbnail=1000,scale=650:488 -frames:v 1 `echo $a | sed s/.MOV/.MOV.medium.jpeg/g` ; done
for a in *.MOV; do ffmpeg -i $a -vf thumbnail=1000,scale=120:90 -frames:v 1 `echo $a | sed s/.MOV/.small.jpeg/g` ; done
find ./ -name '*.html' -exec sed -i 's/width="0"\ height="0"/width="650"\ height="488"/g' {} \;
sudo add-apt-repository -n -y ppa:sicklylife/gthumb sudo apt update sudo apt install gthumb
Vine Linux 6になってgthumbがバージョン2.12.3になったら、 気軽なウェブアルバム作成機能が見当たらなくなってしまった。 サムネイルさえ自動生成できれば、 後は、lsとかlibreofficeとかでシンプルなhtmlファイルを作ればいいか。
for a in *.JPG; do convert -resize 120x90 $a `echo $a | sed s/.JPG/_120.jpg/g` ; done
上の例は、デジカメのA1234.JPGみたいな画像ファイルに対して120x90のサムネイルを 一括生成して、A1234_120.jpgみたいな名前をつける。 ウェブアルバムを作るには、
ls A*.JPG > A.csv ls A*_120.jpg A_120.csv
みたいにしておいて、libreofficeの表計算ツールで、空の列をはさみながら、 A.csvとA_120.csvをそれぞれ2列に読み込んで、 空の列のところにhtmlタグを入れる。 例えば、1行に写真を5枚ずつ並べるなら、
<tr><td><a href=" | A1234.JPG | ><img src= | A1234_120.jpg | " /></a></td> |
<td><a href=" | A1235.JPG | ><img src= | A1235_120.jpg | " /></a></td> |
<td><a href=" | A1236.JPG | ><img src= | A1236_120.jpg | " /></a></td> |
<td><a href=" | A1237.JPG | ><img src= | A1237_120.jpg | " /></a></td> |
<td><a href=" | A1238.JPG | ><img src= | A1238_120.jpg | " /></a></td></tr> |
<tr><td><a href=" | A1239.JPG | ><img src= | A1239_120.jpg | " /></a></td> |
<td><a href=" | A1240.JPG | ><img src= | A1240_120.jpg | " /></a></td> |
<td><a href=" | A1241.JPG | ><img src= | A1241_120.jpg | " /></a></td> |
<td><a href=" | A1242.JPG | ><img src= | A1242_120.jpg | " /></a></td> |
<td><a href=" | A1243.JPG | ><img src= | A1243_120.jpg | " /></a></td></tr> |
みたいにhtmlタグを挿入する。
tr><td>が1行の次は<td>が4行続くといった5行ずつの繰り返しを libreoffice上でコピーするには、5行ぶんのセルを領域選択してから、 マウスポインターを選択領域の右下に持って行って、ポインターが+印に 変化してから、クリックしたまま下側にずらしていけばよい。 要は、1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,...みたいな繰り返しをコピーする要領。
上記のようなことは、やっぱりプログラムでやった方が楽だ。
for a in *.jpg; do convert -resize 120x90 $a `echo $a | sed s/.jpg/_120.jpeg/g` ; done
みたいにして、デジカメのa1234.jpgみたいなファイルに対して、 120x90のサムネイルをa1234.jpegみたいに拡張子を変えて生成。で、
ls *.JPG > lsjpg ls *_120.jpeg >lsjpeg
として、元画像のリストをlsjpgに、サムネイルのリストをlsjpegに保存。 で、lsjpgの冒頭に写真の枚数を入れてから、以下のフォートランのプログラムを実行。
implicit real*8(a-h,o-z) character a20*20,b20*20 nretu=3 open(4,file='lsjpg') read(4,*) n open(5,file='lsjpeg') iretu=0 do i=1,n if(iretu==0) then print*,'<tr>' end if iretu=iretu+1 read(4,*) a20 read(5,*) b20 print*,'<td><a href=\"',a20,'"><img src="',b20,'\" /></a></td>' if(iretu==nretu) then print*,'</tr>' iretu=0 end if end do end