从文件夹中输入图像,并在调整大小后将其存储到输出文件夹

时间:2009-04-07 03:42:19

标签: php image-processing

我需要将一系列图像作为文件夹的输入,在调整大小后,调整大小的图像应存储在输出文件夹中。我写了代码。但是在调整图像大小后的代码中,输出文件夹只有一个黑色图像。

要调试此代码,请创建输入&输出文件夹并将一些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);
?>

1 个答案:

答案 0 :(得分:2)

您的错误就在这一行:

$uploadedfile = $imgarray[$i];

您的图片位于输入文件夹中,但这是将变量设置为图片名称,因此当您尝试拨打imagecreatefromgifgetimagesize时,它找不到图像,导致黑色你得到的输出。要修复,只需在名称前添加正确的目录:

$uploadedfile = "input/" . $imgarray[$i];

使用此更改进行测试,它可以正常工作。

作为旁注,我能够快速通过在error_reporting上找到代码的错误:

error_reporting(E_ALL);
ini_set('display_errors', 1);

通过执行此操作,您将收到警告消息,否则您可能看不到。这些可能是快速修复和头发撕裂数小时之间的区别。在调试时使用它。