如何从mySQL数据库获取图像并使用PHP调整其尺寸?

时间:2012-03-09 12:04:10

标签: php mysql image resize

更新:如果其他人对此感到疑惑,请查看http://www.php.net/manual/en/function.imagecreatefromstring.php#31178

上的评论

我将图像存储在数据库表中。它们以原始尺寸上传。 我可以使用PHP头文件将这个图像输出到浏览器没问题(比如“getimage.php?imgID = 1”),但是如果我想在将图像输出到浏览器之前调整图像大小,我就会卡住。

我不想写一个新文件,我只是想从数据库表中获取一个图像,并调整它的大小(最好是在同一个PHP脚本中)。

像这样的东西是完美的:getimage.php?imgID = 1& width = 75& height = 75

有谁能告诉我如何用PHP做到这一点?

    $query=  "select * from `tablename`.`photos` where `ImageID` = '".$_GET['imgID']."' LIMIT 1";
$downloadResult = SendQuery("browse",$query); // my own custom php function to connect & send a mysql query
if(is_array($downloadResult)){ //check if a row was returned
    foreach($downloadResult as $myfile) {
        header("Content-Type: ". $myfile['mime']);
        header("Content-Length: ". $myfile['size']);
        if($d=="true"){
        header('Content-Disposition: inline; filename="'. urlencode($myfile['name']).'"');  
        }
        echo $myfile['data'];
    }

5 个答案:

答案 0 :(得分:3)

您从二进制字符串($myfile['data'])加载图像数据。您只需要一个能够基于二进制字符串创建图像对象的图像库/扩展。例如,GD library可以从字符串加载数据:

$im = imagecreatefromstring($myfile['data']);

然后,您可以采取任何非常多的示例(包括已经在此网站上的大量示例)来根据您的需要调整图像大小。

调整图像大小后,可以将其输出到浏览器,例如PNG:

imagepng($im);
imagedestroy($im);

imagecreatefromstring­Docs。如果使用通过简单接口调整大小的图像库,您可能会发现它很有用,例如Wideimage也支持从二进制字符串加载。这是基于GD的:

WideImage::loadFromString($myfile['data'])
    ->resize(50, 30)
    ->output('png');

是的,就这么简单。参见:

答案 1 :(得分:0)

答案 2 :(得分:0)

真的需要在php中发生吗? 有css属性,如max-width

答案 3 :(得分:0)

你可以使用imagemagick,就像这样(未经测试的代码):

    //your image code here
    $image_path = 'path-to-image';

    $width = null;
    $height = null;

    if(array_key_exists('width', $_REQUEST)) {
        $width = intval($_REQUEST['width']);
    }

    if(array_key_exists('height', $_REQUEST)) {
        $height = intval($_REQUEST['height']);
    }

    //add your header infos like
    header('Content-Type: image/jpg');
    header('Content-Disposition: attachment; filename="filename.jpg"');
    if(null !== $width && null !== $height) {
        $cmd = 'convert '.escapeshellarg($image_path).' -resize '.$width.'x'.$height.' - ';
        echo shell_exec($cmd);
    }
    else {
        readfile($image_path);
    }

答案 4 :(得分:0)

目前你的getimage.php脚本做了什么?它是否在HTML img标记中显示数据库中的图像?如果它在img标记中显示图像,那么您可以将widthheight的字段添加到img标记,以便以您需要的尺寸显示图像。< / p>