qlmanage -tで生成するサムネイル画像の大きさを変えたいときは、-s <サイズ>でピクセル数を、-f <拡大率>で倍率を指定する。

$ qlmanage -t -s 512 -o out pic.png
$ file out/pic.png.png
out/pic.png.png: PNG image data, 512 x 270, 8-bit/color RGBA, non-interlaced

元のpic.pngは4096 x 2160ピクセルである。長辺が512ピクセルのサムネイルが生成された。実行例はmacOS 27.0.1のもの。

ここでは-oでPNGファイルとして出力して大きさを確認している。

参考: 【qlmanage】ウィンドウを開かずプレビュー・サムネイルをファイルに出力する (-o)

-sでサムネイルの長辺を指定する

-sの値は、サムネイルの長辺のピクセル数である。縦横比は元のファイルのまま保たれる。

$ for s in 32 64 128 512 1024; do
>   qlmanage -t -s $s -o out pic.png sample.txt > /dev/null
>   echo "-s $s"; file out/* | sed 's/, 8-bit.*//'
> done
-s 32
out/pic.png.png:    PNG image data, 32 x 17
out/sample.txt.png: PNG image data, 32 x 32
-s 64
out/pic.png.png:    PNG image data, 64 x 34
out/sample.txt.png: PNG image data, 64 x 64
...
-s 1024
out/pic.png.png:    PNG image data, 1024 x 540
out/sample.txt.png: PNG image data, 1024 x 1024

横長のPNG画像は長辺が幅になるため、高さが縮む。テキストファイルのサムネイルは正方形である。

-sを省略した場合の既定値は128ピクセルである。

元の画像より大きいサイズは指定できない

画像ファイルでは、元のピクセル数を超えるサムネイルは作られない。4096 x 2160ピクセルの画像に-s 5000を指定すると、元と同じ大きさになる。

$ qlmanage -t -s 5000 -o out pic.png
$ file out/pic.png.png
out/pic.png.png: PNG image data, 4096 x 2160, 8-bit/color RGBA, non-interlaced

元の大きさを持たないテキストファイルでは、指定した大きさのサムネイルが作られる。-s 5000なら5000 x 5000ピクセルである。

-fで倍率を指定する

-fは、-sで指定したサイズに掛ける倍率である。Retinaディスプレイ向けに2倍の画像が欲しいときにも使える。

$ for f in 1 2 3; do
>   qlmanage -t -s 128 -f $f -o out pic.png sample.txt > /dev/null
>   echo "-s 128 -f $f"; file out/* | sed 's/, 8-bit.*//'
> done
-s 128 -f 1
out/pic.png.png:    PNG image data, 128 x 68
out/sample.txt.png: PNG image data, 128 x 128
-s 128 -f 2
out/pic.png.png:    PNG image data, 256 x 135
out/sample.txt.png: PNG image data, 256 x 256
-s 128 -f 3
out/pic.png.png:    PNG image data, 384 x 202
out/sample.txt.png: PNG image data, 384 x 384

画像のピクセル数は、-sの値に-fの値を掛けたものになる。-sを省略して-f 2だけを指定すると、既定値の128ピクセルに2を掛けた256ピクセルになる。

$ qlmanage -t -f 2 -o out pic.png
$ file out/pic.png.png
out/pic.png.png: PNG image data, 256 x 135, 8-bit/color RGBA, non-interlaced

小数の倍率も指定できる。-s 100 -f 1.5は150ピクセルになる。

不正なサイズを指定すると既定値になる

-s 0や-s abcのように数値として扱えない値を指定しても、エラーにならない。サイズは既定の128ピクセルになる。

$ qlmanage -t -s abc -o out pic.png
$ file out/pic.png.png
out/pic.png.png: PNG image data, 128 x 68, 8-bit/color RGBA, non-interlaced

スクリプトからサイズを渡すときは、意図した大きさになっているかをfileやsips -g pixelWidthで確認するとよい。

-Fで等倍との比較用に生成する

-F <倍率>は、-fと似たオプションである。qlmanage -hには「縮小して描画し、等倍と比較する」と説明されている。

-Fに2以上を指定すると、1つのファイルにつき生成が2回行われ、produced one thumbnailが2回表示される。-F 1では1回である。

$ qlmanage -t -s 128 -F 2 -o out pic.png 2>&1 | grep -c produced
2
$ qlmanage -t -s 128 -F 1 -o out pic.png 2>&1 | grep -c produced
1

画像ファイルの出力サイズには、-fと同じく倍率が掛かる。-s 128 -F 2なら256 x 135ピクセルである。

$ qlmanage -t -s 128 -F 2 -o out pic.png
$ file out/pic.png.png
out/pic.png.png: PNG image data, 256 x 135, 8-bit/color RGBA, non-interlaced

テキストファイルでは、実行するたびに128ピクセルと倍率が掛かった256ピクセルのどちらかになる。同じコマンドを8回繰り返すと、sample.txtのサムネイルは256 x 256ピクセルが5回、128 x 128ピクセルが3回だった。

$ for i in 1 2 3 4 5 6 7 8; do
>   qlmanage -t -s 128 -F 2 -o out pic.png sample.txt > /dev/null
>   file out/sample.txt.png | sed 's/.*PNG image data, //;s/, 8-bit.*//'
> done
256 x 256
128 x 128
256 x 256
256 x 256
256 x 256
128 x 128
256 x 256
128 x 128

-Fは、1つのファイルの生成を2回行う。保存されるファイルの大きさが一定にならないため、画像の保存には使わない。ファイルに保存する画像の大きさを変えたいときは、-Fではなく-sと-fを使う。