PNGやJPEGの解像度(DPI)の変更

ふだんはあまり気にしないことだが、PNGファイルやJPEGファイルには物理的な解像度の設定値を持っている。PCの画面表示に比べて印刷では高い解像度の画像が求められる。言うまでもなく、同じピクセル数の画像でも高解像度の設定のほうが物理的な寸法は小さくなりピクセルの密度が高くなる。

画像のピクセルデータはそのままに解像度の設定値のみを変更したい場合、Ubuntu環境であればImageMagickを用いるとよい。

インストール
$ sudo apt install imagemagick
解像度の確認
$ identify -verbose hoge.png | grep "Resolution\|Units"
  Resolution: 37.79x37.79
  Units: PixelsPerCentimeter

この場合、単位がDPI(ピクセル/インチ)ではなくピクセル/cmになっていることに注意。ピクセル/cmをDPIに換算するには2.54倍すればよい。つまり37.79ピクセル/cm = 95.99DPIである。

DPI値で表示するには

$ identify -units PixelsPerInch -verbose hoge.png | grep "Resolution\|Units"
  Resolution: 95.99x95.99
  Units: PixelsPerInch
解像度の変更

300DPIに変更するには

$ convert -density 300 -units PixelsPerInch hoge.png piyo.png
$ identify -units PixelsPerInch -verbose piyo.png | grep "Resolution\|Units"
  Resolution: 300x300
  Units: PixelsPerInch

下記の語順だと単位がDPIにならないので要注意。控えめに言ってバグだと思う。

$ convert hoge.png -density 300 -units PixelsPerInch piyo.png