0

我正在尝试创建简单的缩略图生成。我基于 Stack Overflow 上的另一个问题,但根据我的需要简化了代码。它应该只根据高度拍摄图像并缩小它。

function create_thumbnail($original_pic, $intended_heigth){
$info = getimagesize($original_pic);
$actual_width = $info[0];
$actual_height = $info[1];

if($info['mime'] == 'image\jpeg'){
    $src = imagecreatefromjpeg($original_pic);
}else{
    return false;
}

$ratio = $intended_heigth / $actual_height;  
$newheight = $intended_heigth;
$newwidth = $actual_width * $ratio; 
$writex = 0;
$writey = 0;

$thumbnail = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($thumbnail, $src, $writex, $writey, 0, 0, $newwidth, $newheight, $actual_width, $actual_height);
return imagejpeg($thumbnail);
}

然后我试图像这样回显 id

<?php $original_pic = "images/info/7/01.jpg"; ?>
<img src="<?php create_thumbnail($original_pic, 90); ?>">

而这无济于事。但在原始代码中,有这样定义的 $writex $writex = round(($mintednded_width - $newwidth) / 2); 但我真的不明白这是为了什么。有任何想法吗?

4

3 回答 3

1

您的create_thumbnail函数具有以下返回语句

return imagejpeg($thumbnail);

如果您阅读imagejpeg函数的文档,您将看到它返回一个布尔值 - 无论图像是否成功创建。

然后你将返回bool值用于你的<img>

<img src="<?php create_thumbnail($original_pic, 90); ?>">

您要做的是返回保存生成的缩略图的路径。阅读文档,注意imagejpeg函数的第二个参数,并使用它返回保存缩略图的路径。

祝你好运

于 2013-07-12T11:42:22.260 回答
0

您错误地使用了此功能。

此功能制作缩略图并返回小图像。您可以将此图像存储到文件中,然后在代码中使用指向此新图像的链接。

您应该更改代码的逻辑。

于 2013-07-12T11:42:46.797 回答
0
create image.php write bellow code
<?php
header('Content-Type: image/jpeg');

function create_thumbnail($original_pic, $intended_heigth) {
    $info = getimagesize($original_pic);
    $actual_width = $info[0];
    $actual_height = $info[1];

    if ($info['mime'] === 'image/jpeg') {
        $src = imagecreatefromjpeg($original_pic);
    } else {
        return false;
    }

    $ratio = $intended_heigth / $actual_height;
    $newheight = $intended_heigth;
    $newwidth = $actual_width * $ratio;
    $writex = 0;
    $writey = 0;

    $thumbnail = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresized($thumbnail, $src, $writex, $writey, 0, 0, $newwidth, $newheight, $actual_width, $actual_height);
    return imagejpeg($thumbnail);
}
?>
<?php  $original_pic = "images/info/7/".$_GET['img']; ?>
<?php  create_thumbnail($original_pic, 90); ?>

Now you can call image with other file
<img src="image.php?img=01.jpg">
于 2013-07-12T13:21:25.550 回答