0

gdによる領域と画像の最大寸法サイズによる比例スケールが必要です。

私はエリアサイズを持っています: $Ax$B

画像サイズ: $ax$b

新しい画像の私 (WidthXHeight) に返される画像 (function($A, $B, $a, $b)) をトリミングせずに比例スケールが必要です。

この例を見てください:

http://file.qip.ru/photo/Dryu3yhl/two_towers.html ?

更新しました:

画像は最大画像幅/高さでサイズ変更する必要があります (ただし、親コンテナーの AxB サイズの範囲外ではありません)。

そのスケール アルゴリズムは、単純な Windows Picture Viewer を使用しています。

imagesize < containersize よりも imagesize = ネイティブ イメージ サイズの場合。imagesize > containersize の幅の場合は幅でスケーリングされ、imagesize > containersize の幅の場合は高さでスケーリングされますが、独自のコンテナーの範囲外ではありません。

ご回答ありがとうございます。

4

1 に答える 1

0

次のような意味ですか。

function new_size($area_width, $area_height, $pic_width, $pic_height) {
    if ($pic_width <= $area_width && $pic_height <= $area_height) return Array('w'=>$pic_width, 'h'=>$pic_height);
    if ($pic_width <= $area_width && $pic_height > $area_height) return Array('w'=>$pic_width*($area_height/$pic_height), 'h'=>$area_height);
    if ($pic_width > $area_width && $pic_height <= $area_height) return Array('w'=>$area_width, 'h'=>$pic_height*($area_width/$pic_width));

    if ($pic_width == $pic_height) {
        if ($area_width > $area_height) return Array('w'=>$pic_width*($area_height/$pic_height), 'h'=>$area_height);
        if ($area_width <= $area_height) return Array('w'=>$area_width, 'h'=>$pic_height*($area_width/$pic_width));
    }


}
于 2013-01-14T14:29:10.893 に答える