使用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时,似乎会出现一些字节混乱,因为当您将数据输出到文件系统时,它可以完美地工作。我已经编辑了答案,请查看