我正在努力使用PHP调整大小和重新采样一些jpeg图像。它采用大于500px乘500px的任何图像,并使最大边500px。这应该是相对简单的,但每次我运行脚本时都会生成一个黑色的jpeg。创建的jpeg具有适当的尺寸,但不包括调整大小的图像。 GD库已启用,我已确定它正在查找原始图像。我一直在看这段代码一天半没有运气,我没看到什么?
<?php
$testimage = 'SandyCayCaribbeanbeach.jpg';
$testfolder = "testimage/testimage.jpg";
list($orgwidth, $orgheight, $type, $attr) = getimagesize($testimage);
echo "org. width " . $orgwidth . "px" . "<br />";
echo "org. height " . $orgheight . "px" . "<br />";
if($orgwidth > 500 || $orgheight > 500){
if($orgwidth > $orgheight){
header('Content-type: image/jpeg');
$ratio = $orgwidth/500;
$newwidth = floor($orgwidth/$ratio);
$newheight = floor($orgheight/$ratio);
$image_p = imagecreatetruecolor($newwidth, $newheight);
$image = imagecreatefromjpeg($testimage);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($image_p, $testfolder, 100);
}
else{
header('Content-type: image/jpeg');
$ratio = $orgheight/500;
$newheight = floor($orgheight/$ratio);
$newwidth = floor($orgwidth/$ratio);
$image_p = imagecreatetruecolor($newwidth, $newheight);
$image = imagecreatefromjpeg($testimage);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($image_p, $testfolder, 100);
}
}
?>
答案 0 :(得分:2)
首先确保您已启用错误报告。还要确保它可以找到源图像“SandyCayBaribbeanbeach.jpg”。
在处理图像大小调整之前进行简单的if(file_exists())
检查有助于捕获错误。
答案 1 :(得分:2)
答案 2 :(得分:0)
仔细检查以确保您的源图像真的是JPEG。如果您运行的是Windows,请在MS Paint中将其打开并重新保存为JPEG。这将有助于排除它是一种不同格式的可能性。
答案 3 :(得分:0)
我最近在一段代码中也讨论了一段时间,发现如果没有定义尺寸,imagecopyresampled甚至会返回1。确保设置了源高度和宽度。