使用PHP在服务器端调整Jpeg的大小
我想在服务器端调整图像大小,使缩略图动态。 我正在使用以下代码:使用PHP在服务器端调整Jpeg的大小,php,jpeg,image-resizing,Php,Jpeg,Image Resizing,我想在服务器端调整图像大小,使缩略图动态。 我正在使用以下代码: <?php Header("Content-type: image/jpeg"); $img_src = $_GET['photo']; $size = getimagesize($img_src); $src_w = $size[0]; $src_h = $size[1]; $dst_w = 80; $dst_h = 80; $test_h = round(($dst_w / $src_w) * $src_h
<?php
Header("Content-type: image/jpeg");
$img_src = $_GET['photo'];
$size = getimagesize($img_src);
$src_w = $size[0];
$src_h = $size[1];
$dst_w = 80;
$dst_h = 80;
$test_h = round(($dst_w / $src_w) * $src_h);
$test_w = round(($dst_h / $src_h) * $src_w);
if($src_w > $src_h) {
$x = $test_w;
$y = $dst_h;
} elseif($src_h > $src_w) {
$x = $dst_w;
$y = $test_h;
}
$img_new = imagecreatefromjpeg($img_src);
$img_mini = imagecreatetruecolor($x, $y);
imagecopyresampled($img_mini,$img_new,0,0,0,0,$x,$y,$src_w,$src_h);
imagejpeg($img_mini);
?>
但它不起作用,我也不知道为什么。没有错误,只是什么也没有出现。
有人能帮我吗
谢谢, 你犯了什么样的错误 否则。。看看这篇文章:检查这一行:
$size = getimagesize($img_src);
您在哪里定义了$img\u src
?我看不见
编辑
使用以下代码将文件写入磁盘,然后重定向到写入的文件:
<?php
$chemin = $_GET['photo'];
$size = getimagesize($chemin);
$src_w = $size[0];
$src_h = $size[1];
$dst_w = 80;
$dst_h = 80;
$test_h = round(($dst_w / $src_w) * $src_h);
$test_w = round(($dst_h / $src_h) * $src_w);
if($src_w > $src_h) {
$x = $test_w;
$y = $dst_h;
} elseif($src_h > $src_w) {
$x = $dst_w;
$y = $test_h;
}
$img_new = imagecreatefromjpeg($chemin);
$img_mini = imagecreatetruecolor($x, $y);
imagecopyresampled($img_mini, $img_new, 0, 0, 0, 0, $x ,$y, $src_w, $src_h);
$name=rand() * rand() . '.jpg';
imagejpeg($img_mini, $name);
header("Location: $name");
?>
如果您得到的是一个空白页,那么您的脚本超时或php内存限制被超过。在启动任何gd功能之前,使用
ini\u set
功能设置内存限制
和最大执行时间
图像处理需要时间和内存。因此,这些配置非常重要。如果您没有收到错误,我将使用您知道的测试映像,逐行检查,确认您得到了预期的结果,直到找到导致问题的行。检查这些函数的预期返回结果,并在代码被卡住或没有得到所需结果的地方生成条件输出 例如:
if (isset($img_src)) {
echo "No image parameter set in the URL";
return;
}
您可能需要将要获取的url转换为实际的文件路径,以便打开该文件。我希望您使用的函数是文件路径,而不是url。如果不是,他们应该这样做,否则你需要额外做2个请求,以避免下载一个图像并通过客户端上的CSS调整大小
在任何情况下,如果要将大小调整为缩略图,确实应该将缩略图缓存在
thumbs
(或其他)子目录中。然后在每个请求中,检查缩略图是否存在,如果存在,则在创建缩略图之前直接提供缩略图。或者,如果文件不是动态上传的,则预先创建缩略图,并直接从thumbs
目录中引用它们。什么是$\u GET['photo']。。。这是一个URL吗?您是否尝试过错误报告(E_ALL)?$\u GET['photo']是传递给图片的URL:“?photo=Galery/Paysages/05052011625.jpg”例如。错误报告(E_ALL)没有返回任何内容。请尝试一路上转储所有变量,如$size
。我很确定你无法读取该文件。这是一个复制/粘贴错误,我已经尝试了我的第一篇文章来更正它。对不起,现在没有$chemin
人了。。。无论如何,它是一个正常工作的脚本,如果您将数据输出到一个文件而不是浏览器,那么当它们通过http时,似乎会出现一些字节混乱,因为当您将数据输出到文件系统时,它可以完美地工作。我已经编辑了答案,请查看