更新:如果其他人对此感到疑惑,请查看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'];
}
答案 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)
请使用名为 - imagic
的扩展程序提供图像重新调整大小其他有用的脚本: -
答案 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
标记中显示图像,那么您可以将width
和height
的字段添加到img
标记,以便以您需要的尺寸显示图像。< / p>