1

現在、作成中のギャラリーでサムネイルを使用できるように画像のサイズを変更できるコードを実装しましたが、うまくいきません。

画像のサイズを変更するために事前に作成されたコードを使用していますが、可能であれば、画像の高さを最低 195 ピクセル、幅を 195 ピクセル以上にするのに苦労しています。

また、画像を最適化してページの読み込み時間を改善する方法はありますか?

これが私の現在のコードです。どんな助けでも大歓迎です、ありがとう!

function imageResize() {
$filename = $row['main'];

if (exif_imagetype($filename) == IMAGETYPE_GIF) {
    $create = imagecreatefromgif;
}

if (exif_imagetype($filename) == IMAGETYPE_JPEG) {
    $create = imagecreatefromjpeg;
}

if (exif_imagetype($filename) == IMAGETYPE_PNG) {
    $create = imagecreatefrompng;
}

$width = 600; //These values have been tinkered with from their original values
$height = 500;

header('Content-Type: image/jpeg');

list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($height_orig < 300) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

$image_p = imagecreatetruecolor($width, $height);
$image = $create($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

imagejpeg($image_p, null, 100);
}
4

1 に答える 1

0

元の画像の高さと幅のどちらが小さいかを調べます。この値が最小の 195 ピクセルよりも小さい場合は、この最小値に設定し、画像の元の縦横比に従って他の値をスケーリングします。

$minSize = 195;
$aspectRatio = $width_orig / $height_orig;

if ($width_orig < $height_orig) {
    if ($width_orig < $minSize) {
        $width = $minSize;
        $height = $width / $aspectRatio;
    }
} else {
    if ($height_orig < $minSize) {
        $height = $minSize;
        $width = $height * $aspectRatio;
    }
}
于 2013-03-16T21:39:02.947 に答える