dongting7352 2016-10-29 14:52
浏览 59


I wanted to resize an image in PHP using the GD library.

I found this question, which helped me alot. It allowed me to do exactly what I wanted. I changed the default value to true instead of the false in the answer, and I also added a way to resize png as well.

This resize_image function worked splendidly for all the images, until I wanted to scale down this image to 400x128 (landscape).

This created a black image. I even removed the parts I added on, and used the plain function copied from the question, and it still rendered black. This particular image seems to have trouble with other image sizes such as 400x400 as well. It all works as expected if you disable the crop option.

Is there something wrong with the math included in the function? I tried doing the math on paper replacing variables with the numbers I wanted, but I got confused midway.

PHPfiddle for an example. Try changing the values in the second last line to something else. It partially works (not to scale, even though cropping should be to scale).

  • 写回答

1条回答 默认 最新

  • douwen8424 2016-10-29 15:37

    When I debugged it, the width was negative. So, if I changed line 9 to the following

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

    it's not black anymore. I don't check the formula whether it is correct or not as expected, but that abs() will make your image not black anymore.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?



  • ¥15 关于九十度混合耦合器信号分析问题
  • ¥15 Cesm如何关闭不用的模块呢
  • ¥15 vue2两层数据导出为excle
  • ¥15 有人能帮我做一下这个项目吗
  • ¥15 网络上传速率比下载速率高
  • ¥15 (标签-游戏|关键词-网页游戏)
  • ¥15 这个咋搞🥹可能需要手把手教
  • ¥15 接口和关键字的问题,多选
  • ¥15 yolov5s模型下载就卡住,没有运行结果
  • ¥20 androidstudio工具问题