0

ユーザーがアップロードした画像のサムネイルを生成しようとしています。サムネイルクラスで元の画像の幅と高さの50%のサムネイルを生成することで、基本的な機能を実行できます。ただし、その機能を拡張し、50%削減した後、いずれかの側で400pxを超えるサムネイルにハード制限を適用したいと思います。

これは私がこれまでに持っているものです:

$x = $image_info[0]; // width of original image
$y = $image_info[1]; // height of original image
$x_t = $x/2; // width of 50% thumbnail
$y_t = $y/2; // height of 50% thumbnail
$biggest = ($x_t > $y_t) ? $x_t : $y_t; // determine the biggest side of the thumbnail

if($biggest > 400)
{
    // Enforce a 400px limit here

    /// somehow :(
}

この厳しい制限により、元の画像を縮小して400pxを超えないようにし、反対側を相対的に縮小して、画像が歪んで見えないようにします。

私と同じように数学がひどいので、サムネイルクラスが画像のサイズを変更する必要がある画像のサイズを計算する方法を見つけることができません。

何か案は?

4

2 に答える 2

2

スケーリング係数を計算する必要があります。

$factor = $biggest / 400;  // if 503, then factor = 1.2575;

$new_x = $x / $factor;
$new_y = $y / $factor;

これらの2つの新しいディメンションをスケーリングに使用します。これにより、$ biggestが400に減少し、それに比例して他の次元が400未満に減少します。

于 2011-08-05T16:48:41.940 に答える
0

一度に両方ではなく、それぞれの長さを確認する必要があります。

if ($x > 400) {
    $x_t = 400;
    $y_t = $y * (400 / $x);
}
if ($y > 400) {
    ...

たとえば、$ xが600の場合、計算は$ y_t = $ y *(400/600)になり、$yは元の値の2/3に減少します。

そして、$y側にも同じ条件を追加します。さらに、どちらの側も400を超えることが許可されていない場合は、計算を同時に適用することをお勧めします。

于 2011-08-05T16:49:01.287 に答える