【问题标题】:How to create a .webp image in PHP [closed]如何在 PHP 中创建 .webp 图像 [关闭]
【发布时间】:2014-10-04 13:59:16
【问题描述】:

如何使用 PHP 创建.webp 图像?

现代版本的 PHP (>= 5.5.0) 可以在 WebP 支持下编译,但据我所知,这在许多网络主机上并不常见。如果编译时支持 WebP,您可以使用内置的 imagewebp() function 创建 .webp 图像。

使用 PHP 创建.webp 图像的替代方法是什么?库、API 其他方法?

【问题讨论】:

  • ImageMagick 包含一个 WebP 扩展。
  • 附注:Firefox 暂时不支持它。所以在浏览器中显示是目前没有的选择。
  • 我过去曾使用 Modernizr 来测试测试 webp 支持,然后有条件地显示适当的图像格式。希望随着时间的推移,更多的浏览器会添加对 webp 的支持。
  • 您是从什么创建 .webp 图像的?假设您正在将 jpeg 或 pngs “转换”为 WebP,您可以使用 imagecreatefromjpegimagecreatefrompng 创建图像资源,然后使用 imagewebp($im, 'file.webp'); 保存您也可以使用 convert (imagick) 批量转换或调用类似的服务Cloudinary:cloudinary.com/documentation/php_image_manipulation(btw 服务很棒!)
  • 这正是我想要做的@EduardoRomero。但是很多服务器仍然不支持 webp 扩展,所以我正在寻找可以轻松放入的第三方库。

标签: php image webp


【解决方案1】:

目前可用的选项有:gd (extension), imagick (extension), imagick (exec-call), gmagick (extension), gmagick (exec-call), cwebp (exec-call), gmagick (exec-call)或调用云服务。我在 github 上创建了一个库“webp-convert”,它尝试了所有方法。自述文件描述了每种方法的优缺点。可在此处获取:https://github.com/rosell-dk/webp-convert

由于我不知道的原因,imagick/gmagick 扩展不会产生比原始文件更好的质量。这只是扩展的问题,而不是 exec 调用的问题。

【讨论】:

    【解决方案2】:

    webp 图像创建过程:

    您可以使用以下 php 命令来获取 webp 图像

    $imgName    =   "codingslover.jpg";
    $webPName   =   "codingslover.webp";
    
    Syntax:
    
     cwebp [quality qualitypercentage] [source image] -o [destination]
    
    exec("cwebp -q 0 ".$imgName." -o ".$webPName." ");
    
    Anthor Method:
    
    exec("convert -colorspace RGB ".$imgName." ".$webPName . " ");
    

    Exec : 在 php 中执行给定的命令

    http://php.net/manual/en/function.exec.php

    【讨论】:

      【解决方案3】:

      您可以直接访问 Google 并从源代码构建 WebP 库。使用此链接为您的操作系统获取适当的存档:

      https://developers.google.com/speed/webp/docs/compiling#building

      然后您可以在 php system() 函数中使用以下命令来转换图像:

      语法:

        cwebp [quality 
       qualitypercentage] [source 
       image] -o [destination]`
      
       cwebp -q 80 source.png -o 
       destination.webp
      

      我建议阅读上面的链接以编译您的库,然后阅读go here to get more information about using the libraries

      祝项目好运!

      【讨论】:

      • 这是题外话,但您能否推荐一些教程/视频来帮助理解从源代码构建库的确切含义?
      【解决方案4】:

      您可以使用Intervention Image Library。它提供了与图像格式相关的各种图像编码选项和实用程序。 Here 是将图像转换为webp 格式的示例代码sn-p。它支持多种图像编码,如下所示,

      • jpg — 返回 JPEG 编码的图像数据
      • png — 返回可移植网络图形 (PNG) 编码的图像数据
      • gif — 返回图形交换格式 (GIF) 编码的图像数据
      • tif — 返回标记图像文件格式 (TIFF) 编码的图像数据
      • bmp — 返回位图 (BMP) 编码的图像数据
      • ico — 返回 ICO 编码的图像数据
      • psd — 返回 Photoshop 文档 (PSD) 编码的图像数据
      • webp — 返回 WebP 编码图像
      • data data-url — 在数据 URI 方案 (RFC 2397) 中编码当前图像数据

      【讨论】:

        【解决方案5】:

        现在有几个 npm 包可以从 PNG、JPEG 和 TIFF 格式创建 .webp 图像。

        这里有一个 Gulp 插件作为示例 - gulp-webp

        【讨论】:

          猜你喜欢
          • 2013-05-09
          • 1970-01-01
          • 2011-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-29
          • 2018-10-19
          相关资源
          最近更新 更多