この前からRMagickを使ったCGIを書いてる訳だが、TIFFデータに関しては、resizeなどのメソッドを使わなくても、attribute methodのx_resolutionやy_resolutionをいじれば変更できることに気づく。
要は、画像データのピクセル数はそのままでresolution(=通常は1インチあたりのピクセル数、つまりDot Per Inch(DPI)で表す)の値を変化させると、画像のサイズは(ピクセル数)÷(resolution)で決定されるため、結果的にサイズが小さくなる。拡大は当然その逆。
元のピクセルデータそのものは変更しないため、resizeメソッドを使うよりも高速でかつ劣化も無い。
実際のコードはこんな感じ。
image.x_resolution = image.x_resolution*scale_factor
image.y_resolution = image.y_resolution*scale_factor
Rubyらしくないって?ほっといてください(笑)