我整天搜索了一个函数来动态调整服务器上的图片大小,而不保存它们。代码工作,它显示全尺寸图像,现在我想让它们变小。 这是功能:
function resize_image($file, $width, $height) {
if (file_exists($file)){
$image = imagecreatefromjpeg($file);
list($orig_width, $orig_height) = getimagesize($file);
$ratio = $orig_width / $orig_height;
if ($ratio < 1) {
$width = $height * $ratio;
} else {
$height = $width / $ratio;
}
$new_image = imagecreatetruecolor($width, $height);
imagecopyresized($new_image, $image,
0, 0, 0, 0,
$width, $height,
$orig_width, $orig_height);
// header('Content-type: image/jpeg');
imagejpeg($new_image, NULL, 80);
}
}
根据我今天搜索的内容,我需要为浏览器设置标题(Content-type: image/jpeg')
以将输出识别为图像,但如果我这样做则会停止脚本。
这是使用它的页面:
<? include('resize.php');
$chapter='test';
$query=$db->prepare("SELECT * FROM `test_db` WHERE `test_db`.`Chapter` LIKE :? ORDER BY `id` ASC LIMIT 0, 6");
$query->bindValue(1, $chapter, PDO::PARAM_STR);
$query->execute();
$rows= $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row){
echo "<li><h2>".$row['Name']."</h2></li>" ;
resize_image("_images/".$row['img_number'].".jpg", 300, 190);
};
?>
答案 0 :(得分:2)
您无法在同一脚本中将html和图像输出到浏览器。
你应该:
使用单独的脚本输出图像并从html调用(简单示例):
<img src="your_script.php?id=XX&size_x=XX&size_y=XX">
将图像保存到文件并从html链接到该文件。
您还可以将图像编码为base64字符串并在图像标记中使用它,但除非您在谈论简单按钮,否则会导致非常大的html文件。
答案 1 :(得分:0)
不要将结束标记放在PHP中。它将在结束标记之后输出空格,这将改变结果。
答案 2 :(得分:0)
什么时候标题会停止脚本?
是的,保存调整大小的文件的原因是(1)你可能会再次需要它们,(2)内容类型使它们成为一个图像而不是文本。如果你想调整那些“内联”的大小,你需要两种内容类型,我想这样做不会那么好......
您可以做的是调整大小并保存文件,提供服务并删除它。像临时图像文件。据我所知,不存在更直接的方式。但如果我错了,请在评论中指出我。我喜欢学习新东西;)
编辑:好的,除了脚本只处理图像大小调整时。现在只想着那个。对不起:)