在PHP中将图像显示为特定大小

时间:2012-03-09 06:50:41

标签: php html

我的数据库中有许多不同尺寸的图像网址。当我用PHP显示我的网页时,如何显示图像并将其设置为固定尺寸?

4 个答案:

答案 0 :(得分:2)

同时使用固定的高度和宽度将拉伸图像。在img标签中仅使用一个高度或宽度,或使用css高度或宽度将图像缩放到固定尺寸。

1。)在html中使用img标签中的高度或宽度 2.)使用高度或高度的CSS 3.)使用php中的图像调整大小按比例调整图像大小。对于图像调整大小,您可以使用任何第三方类。例如。以上建议。

答案 1 :(得分:1)

您可以轻松使用此功能:Smart Image Resizer

希望有所帮助

答案 2 :(得分:1)

我建议在上传图像时调整所有图像的大小,并将调整后的图像与原始图像一起存储。

答案 3 :(得分:0)

你可以使用这样的脚本(只是一个示例代码)。

我建议您为调整大小的文件实现图像缓存。

<?php

$image = "images/worldsmap_bg.png";

if(!file_exists($image))
    throw new Exception("file doesn't exists");

$imageinfo = getimagesize($image); 

$maxwidth = 120;
$maxheight = 150;
$origratio = $imageinfo[0]/$imageinfo[1];

$width = $imageinfo[0];
$height = $imageinfo[1];

if($height>$maxheight)
{
    $faktor = $maxheight/$imageinfo[1];
    if($faktor < 1)
    {
        $width = round($width*$faktor);
        $height = round($height*$faktor);
    }
}

if($width>$maxwidth)
{
    $faktor = $maxwidth/$width;
    if($faktor < 1)
    {
        $width = round($width*$faktor);
        $height = round($height*$faktor);
    }
}

$image_p = imagecreatetruecolor($width, $height);

switch($imageinfo[2]):
    case IMAGETYPE_GIF:
            $image = imagecreatefromgif($image);
        break;
    case IMAGETYPE_JPEG:
    case IMAGETYPE_JPEG2000:
            $image = imagecreatefromjpeg($image);
        break;
    case IMAGETYPE_PNG:
            $image = imagecreatefrompng($image);
        break;
    default:
        throw new Exception ("invalid image");
        break;
endswitch;


imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $imageinfo[0], $imageinfo[1]);

header("Content-type: " . image_type_to_mime_type($imageinfo[2]));

switch($imageinfo[2]):
    case IMAGETYPE_GIF:
            imagegif($image_p);
        break;
    case IMAGETYPE_JPEG:
    case IMAGETYPE_JPEG2000:
            imagejpeg($image_p);
        break;
    case IMAGETYPE_PNG:
            imagepng($image_p);
        break;
    default:
        throw new Exception ("invalid image");
        break;
endswitch;

?>