我需要将一系列图像作为文件夹的输入,在调整大小后,调整大小的图像应存储在输出文件夹中。我写了代码。但是在调整图像大小后的代码中,输出文件夹只有一个黑色图像。
要调试此代码,请创建输入&输出文件夹并将一些gif图像放在输入文件夹中,并查看输出文件夹中的输出。请帮忙。
<?php
$dir = opendir("input/");
$i = 0;
while ($imgfile = readdir($dir))
{
if ($imgfile != "." && $imgfile != "..")
{
$imgarray[$i] = $imgfile;
$newwidth = 240; //new width
$newheight = 320; //new height
$uploadedfile = $imgarray[$i];
$src = imagecreatefromgif($uploadedfile);
list($width, $height) = getimagesize($uploadedfile);
$tmp = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
$filename = "output/" . $imgarray[$i];
imagegif($tmp, $filename, 100);
imagedestroy($src);
imagedestroy($tmp);
$i++;
}
}
closedir($dir);
?>
答案 0 :(得分:2)
您的错误就在这一行:
$uploadedfile = $imgarray[$i];
您的图片位于输入文件夹中,但这是将变量设置为图片名称,因此当您尝试拨打imagecreatefromgif
和getimagesize
时,它找不到图像,导致黑色你得到的输出。要修复,只需在名称前添加正确的目录:
$uploadedfile = "input/" . $imgarray[$i];
使用此更改进行测试,它可以正常工作。
作为旁注,我能够快速通过在error_reporting上找到代码的错误:
error_reporting(E_ALL);
ini_set('display_errors', 1);
通过执行此操作,您将收到警告消息,否则您可能看不到。这些可能是快速修复和头发撕裂数小时之间的区别。在调试时使用它。