将图像调整到特定高度

时间:2013-03-16 20:38:48

标签: php

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

我正在使用一些预先编写的代码来调整图像的大小,尽管我正在努力为图像提供最小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);
}

1 个答案:

答案 0 :(得分: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;
    }
}