用PHP调整服务器端的Jpeg的大小
我想调整服务器端的图像大小,以使缩略图具有动态性。 我使用这个代码:用PHP调整服务器端的Jpeg的大小
<?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);
?>
但它没有工作,我找不到原因。没有错误,没有任何出现。 任何人都可以帮助我吗?
谢谢;
如果你得到一个空白页面,那么无论你的脚本超时或php内存限制已被超过。在启动任何gd函数之前,使用ini_set
函数来设置memory_limit
和max_execution_time
。
图像处理需要时间以及内存。所以这些配置很重要。
它解决了问题;谢谢你的帮助。 –
你得到了什么样的错误?
否则..看看这篇文章:http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/
我没有得到任何错误;只有“没有”。 –
检查这一行:
$size = getimagesize($img_src);
你上哪儿去定义$img_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");
?>
这是一个复制/粘贴错误,我编辑我的第一篇文章来纠正它。抱歉。 –
现在没有'$ chemin'的人... 无论如何,这是一个正常工作的脚本,如果你输出到一个文件而不是浏览器 –
似乎是一些歪曲的字节,当他们通过HTTP传递,因为它的工作原理完全在输出到文件系统时。我已经编辑了答案,查看了它 –
如果您没有收到错误信息,我会使用您知道的测试图像,并逐行处理,确认您已得到您期望的结果,不加思索地找到该行(s)这是造成问题。检查这些函数的预期返回结果,并制定条件,输出代码卡住的位置或未获得所需结果的位置。
例子:
if (isset($img_src)) {
echo "No image parameter set in the URL";
return;
}
你可能需要翻译,你正在进入一个实际的文件路径的URL,这样就可以打开该文件。我期望你使用的函数需要一个文件路径,而不是一个url。否则,他们应该另外做2个额外的请求,以避免下载一个图像并通过客户端上的CSS调整大小。
无论如何,如果您要调整缩略图的大小,您应该将缩略图缓存到thumbs
(或其他)子目录中。然后在每次请求时,检查缩略图是否存在,如果存在,直接提供,然后创建缩略图。或者,如果文件未被动态上传,请预先创建缩略图,并直接从thumbs
目录中引用它们。
*什么*不起作用? – bos
对不起,我编辑了这篇文章。 –
什么是$ _GET ['photo'] ...它是一个网址吗? –