-2

新しい画像のDPIを手動で見つける必要があります。

$input_width = 361;
$input_height = 413;

$input_dpi_x = 72;
$input_dpi_y = 72;

$output_width = 800;
$output_height = $input_height * $output_width / $input_width;

$output_dpi_x = ceil(($input_dpi_x / $input_width) * $output_width);
$output_dpi_y = ceil(($input_dpi_y / $input_height) * $output_y_res);

echo "Outpud_dpi_x = " . $output_dpi_x;
//Outpud_dpi_x = 160

画像のサイズを変更すると、800ではなく802になるのはなぜですか?

と私はDPIを使用する必要があります理由を尋ねないでください

4

1 に答える 1

0

答えはすべて数学にあります...簡単にするために幅に焦点を当てましょう。

レイヤーを少し引き戻し、スケーリング操作から始めます(精度の低下を助けるために並べ替えられています)。ここでは、出力DPI値を計算し、の元の方程式を解いて結果を検証してい$output_widthます。

$output_dpi_x = $output_width * $input_dpi_x / $input_width;  // 159.5567867...
$output_width = $output_dpi_x * $input_width / $input_dpi_x;  // 800

このDPIの補正されていない値を見ると、幅の値が800に戻っていることがわかります。(演算子を使用して)次の数値ceilに切り上げると、結果が変わります。計算をほどくと、出力に802pxが表示される理由がわかります。

$output_dpi_x = ceil($output_dpi_x);  // 160
$output_width = $output_dpi_x * $input_width / $input_dpi_x;  // 802.22222222...

もちろん、画像に部分的なピクセルを含めることはできないため、サイズ変更された画像は802pxに切り捨てられます。

于 2012-10-12T13:44:38.360 に答える