Php imagecopyresized()返回黑色缩略图

Php imagecopyresized()返回黑色缩略图,php,html,file-upload,upload,thumbnails,Php,Html,File Upload,Upload,Thumbnails,我之前发布了另一个调整大小的脚本不起作用,我对这个脚本有了进一步的了解,它做的事情有点不同 我走得更远了一点,只是现在出现了一个新问题。代码的前三行成功地将三个相同的文件与该文件放在目标目录中,并相应地命名了两个缩略图文件。然后我想加载缩略图,它仍然是全尺寸的,并调整它们的大小,但是脚本停止在imagecreatefromjpeg(),我似乎不明白为什么,因为$src有一个值 我想我可能会删除这一行,并在我的imagecopyresized()函数中将$source替换为$src,这让我更加接近

我之前发布了另一个调整大小的脚本不起作用,我对这个脚本有了进一步的了解,它做的事情有点不同

我走得更远了一点,只是现在出现了一个新问题。代码的前三行成功地将三个相同的文件与该文件放在目标目录中,并相应地命名了两个缩略图文件。然后我想加载缩略图,它仍然是全尺寸的,并调整它们的大小,但是脚本停止在
imagecreatefromjpeg()
,我似乎不明白为什么,因为
$src
有一个值

我想我可能会删除这一行,并在我的
imagecopyresized()
函数中将
$source
替换为
$src
,这让我更加接近。但是它会返回目标大小的缩略图,但是缩略图是黑色的

move_uploaded_file($tmpFilePath, $newFilePath);
copy($newFilePath, $thumb500);
copy($newFilePath, $thumb200);


function thumbImage($src, $dest, $newheight) {
  list($width, $height) = getimagesize($src);

  $newwidth = $width * ($newheight / $height);

  // Load
  $thumb = imagecreatetruecolor($newwidth, $newheight);
  header('Content-type: image/jpeg');
  $source = imagecreatefromjpeg($src);

  // Resize
  imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

  // Output
  imagejpeg($thumb, $dest);
}

thumbImage($thumb500, $thumb500, 500);
thumbImage($thumb200, $thumb200, 200);

我觉得这一定是一个共同的问题。有什么建议吗?

对我来说,如果我使用JPEG图像作为源,提供的代码块可以工作


问题可能是您使用了使用透明度的PNG图像。由于JPEG无法处理透明胶片,因此将填充透明背景色。也许这就是问题所在。如果没有,请提供具有问题行为的示例图像。

不知道缩略图的用途。但是,如果只是以较小的格式显示用户提供的图像,也许可以使用开放源码的动态缩略图生成器,如Timthumb。@vinsanity38我尝试过其他插件,但它们都不能按我希望的方式工作,这就是为什么我自己尽可能少地构建了它。但是这里有一个更简单的问题,我想。好吧,如果你的缩略图返回黑色,那么可能是你为裁剪位置设置的x和y坐标。它们在图像维度之外,因此返回黑色image@vinsanity38我不认为是这样的。。。因为我从图像的最开始就用0,0,0,0开始,没有裁剪。在我的
imagecopyresized()
中,我必须使用负值来裁剪图像外部,不是吗?您正在脚本中发送一个标题('Content-type:image/jpeg')。您是否正在尝试将脚本URL直接输出为图像?那将不会像你1。打印新旧尺寸和2。如果不输出图像数据,请使用readfile($thumb500)进行输出。如果这没有帮助,请提供一个示例图像并给出您的PHP版本。对我来说,它在PHP5.5.1中工作,这可能是您感兴趣的答案:。是否可能该图像以.jpg作为结尾,但不包含JPEG图像?建议在另一个线程中使用标题行作为修复,但我发现它在该脚本中既没有帮助也没有坏处。打印只是为了检查其他值是否存在问题,我将编辑它们以解决问题。我还确信它是一个
.jpg
,文件名为“health-cheesecake21.jpg”。请告诉我更多关于这个
readfile
的信息,以及我将如何在脚本中实现它。我需要一个示例图像的完整URL,这样我就可以下载它来验证它是否适合我,并且PHP/GD或该图像没有一般性问题。只有在尝试直接在图像标记中使用上载脚本时,才需要使用
readfile
方法。(标题行所暗示的内容)。如果您使用缩略图的URL,则无需费心处理
readfile