が必要shrink
です。整数引数を使用すると、ピクセルの単純なブロック平均化が行われます。
im = Vips.Image.new_from_file("somefile.jpg")
im = im.shrink(2, 2)
im.write_to_file("someotherfile.tif")
ピクセル形式は同じままなので、uchar 画像の場合、最も近い値に丸められた uchar 平均が得られます。何か違うものが必要な場合は、自分自身を浮かせたり、縮めたり、丸めたりするようにキャストします。
libvips は、画像の解像度 (1 インチあたりのピクセル数、または単位が何であれ) を、システムによって持ち運ばれ、ロードおよび保存操作で使用されるメタデータのビットとして扱いますが、vips 自体によって更新されることはありません。これは、画像の解像度は通常、距離ごとのピクセルの単純な測定よりも複雑であり、アプリケーションはライブラリよりも正しいことを行う可能性が高いためです。
分解能を読み上げたい場合は、 と を使用.xres
し.yres
ます。これらは常にピクセル/ミリ単位であり、ロードおよび保存時に適切な単位との間で変換されます。
print "im.xres =", im.xres, "ppm"
libvips イメージは不変であるため、xres/yres に割り当てるだけではなく、それらの値を変更して新しいイメージを作成する必要があります。新しい値を設定するには、 を使用します.copy()
。舞台裏では、.copy()
ポインタをコピーするだけなので、非常に高速です。上記の例は次のようになります。
im = Vips.Image.new_from_file("somefile.jpg")
im = im.shrink(2, 2)
im = im.copy(xres = im.xres / 2.0, yres = im.yres / 2.0)
im.write_to_file("someotherfile.tif")
マニュアルのそのセクションの紹介に、縮小と縮小の機能を説明するメモを追加しました。