WebP 图片格式真是个巨坑, 折腾了几天 PHP 都不能正常处理, PHP 是最好的语言!

2015-08-15 10:01:17 +08:00
 juneszh
最近在撸一个跟微信相关的项目, 涉及到图片上传处理. 微信居然会偶然上传WebP格式的图片.

服务器环境: PHP 5.5.28, 所有扩展均为最新版本

试了GD和Imagick两个扩展均不能正常读取:
Imagick里new完直接为NULL, 后续操作全部报错找不到tmp临时文件;
GD里使用imagecreatefromwebp读出是泛黄的图片. 后面输出各种格式更是惨不忍睹.
(stackoverflow里类似的情况: http://stackoverflow.com/questions/26314508/convert-jpg-to-webp-using-imagewebp)

目前想到唯一可行的使用命令行"dwebp img.webp -o img.jpg"的方法, 先转jpg再处理. 问题是人家为了安全考虑, PHP禁用了exec等命令... 无解中

PHP是最好的语言!
PHP是最好的语言!
PHP是最好的语言!
14888 次点击
所在节点    PHP
24 条回复
juneszh
2015-08-17 10:04:00 +08:00
@realpg 感谢!的确是编辑扩展时出了问题, 现在 imagick 在 PHP 可以支持 webp 了.
juneszh
2015-08-17 10:30:01 +08:00
最后总结下: 在 PHP 5.5 中, 对于 WEBP 的支持还是很初级的阶段(可以看到最近的版本更新都有 webp 的 BUG 修复), GD 库真的很多问题, 偏黄移位等等. 目前唯一可用的是 imagick 库, 不过编译时需要先安装 libwebp, 并且编译扩展时要注意点(看 12 楼).

另外, 一句"PHP 是最好的语言"真是很好的钓鱼句, 也看尽了 PHPer 的众生相.
break
2015-08-17 10:32:41 +08:00
@juneszh 下面两个手册内容不知道有没有帮助 php 本身就可以生成 webp 格式的
http://php.net/manual/zh/function.imagecreatefromwebp.php
http://php.net/manual/zh/function.imagewebp.php
juneszh
2015-08-17 10:34:45 +08:00
@break 这个就是 GD 库的, 很多问题.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/213350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX