首页 > 解决方案 > imagewebp 函数失败但不产生任何错误

问题描述

我想将 jpeg 图像的文件夹转换为另一个文件夹中的 webp 格式。我正在使用 GD 库中的 imagewebp 函数。当函数被调用时,代码就会停止。尽管文件实际上是创建的,但它的长度为零。没有错误被抛出。

gd_info 显示版本 2.1,支持 WebP 为 1。

php 版本 5.6

如果我更改为,一切正常,imagepng()因此库已安装并正常工作。

我已经尝试过单个小图像,以防它是一个内存问题,但仍然有同样的问题。

还尝试了 imagecreatefromjpeg 而不是 imagecreatefromstring 但相同。

将质量过滤器删除为默认值(例如省略了 65),但效果相同。

我还尝试将单个文件直接输出到浏览器。这适用于 imagepng,但 imagewebp 出现 404 错误

$jpgfiles = glob ('jpegs/*.jpg');
echo "<p>" . sizeof( $jpgfiles ) . " files found. </p>"; // Shows 7 files   
foreach($jpgfiles as $j) {
    echo "<p>Found $j</p>"; // Shows first found file
    $filename = substr( $j, 6, -4) . '.webp'; // Keep the same filename but change extension
    echo "<p>$filename</p>";
    $jpgimage = imagecreatefromstring( file_get_contents( $j ) );
    if( !$jpgimage ) die ("Failed on imagecreatefromstring");

   if( $webpimage = imagewebp( $jpgimage, 'webps/' . $filename, 65 )) echo "$filename created"; // This is never echo'd
   else die ("Failed on imagewebp"); // Doesn't die either
   imagedestroy ( $jpgimage );

}

我希望创建图像,但程序执行停止。错误日志不包含任何信息。die 命令永远不会被调用。webp 文件已创建,但长度为零。

标签: phpgd

解决方案


推荐阅读