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


Resizing Image in PHP creates Black Image

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

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

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

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

在函数中包含的数学是否有问题?我试着在纸上做数学,用我想要的数字替换变量,但我中途糊涂了。

PHPfiddle为例。尝试将最后第二行中的值更改为其他值。它部分工作(不按比例,即使裁剪应该按比例)。

当我调试它时,宽度是负值。所以,如果我把第9行改成下面的

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

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