1

我目前已经实现了一段代码,允许我调整图像大小以允许在我正在创建的画廊中使用缩略图,尽管它不太顺利。

我正在使用一些预先编写的代码来调整图像的大小,尽管我正在努力为图像提供至少 195px 的高度和 195px 的宽度+如果可能的话保持成比例。

还有什么方法可以优化图像以改善页面加载时间吗?

这是我当前的代码,任何帮助将不胜感激,谢谢!

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 回答