在 PHP 中调整图像大小会创建黑色图像

Resizing Image in PHP creates Black Image

我想使用 GD 库在 PHP 中调整图像大小。

我找到了 this question,这对我帮助很大。它让我可以做我想做的事。我将默认值更改为 true 而不是答案中的 false,并且我还添加了一种调整 png 大小的方法。

这个 resize_image 函数对所有图像都非常有效,直到我想将 this image 缩小到 400x128(横向)。

这创建了一个黑色图像。我什至删除了我添加的部分,并使用了从问题中复制的普通函数,它仍然呈现黑色。这个特定的图像似乎也有其他图像尺寸的问题,例如 400x400。如果您禁用裁剪选项,一切都会按预期工作。

函数中包含的数学有问题吗?我试着在纸上用我想要的数字替换变量来做数学运算,但我在中途感到困惑。

PHPfiddle 举个例子。尝试将倒数第二行中的值更改为其他值。它部分有效(不按比例缩放,即使裁剪应该按比例缩放)。

我调试的时候,宽度是负数。 所以,如果我将第 9 行更改为以下

$width = abs(ceil($width-($width*abs($r-$w/$h))));

它不再是黑色的了。 我没有检查公式是否正确,如预期的那样,但是 abs() 会让你的图像不再是黑色的。