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 条回复
anubiskong
2015-08-15 10:09:46 +08:00
虽然讨厌php, 但是你的问题确实和php无关
leopardwei
2015-08-15 10:16:26 +08:00
典型的自我催眠,其实我知道楼主不爱 PHP,但必须要用,所以…… 你懂的,:D
oott123
2015-08-15 10:30:39 +08:00
为啥为了安全要禁用 exec
ljbha007
2015-08-15 10:38:44 +08:00
assassinpig
2015-08-15 10:51:01 +08:00
准备跳坑
kslr
2015-08-15 11:20:15 +08:00
Imagick webp库装好没
kslr
2015-08-15 11:21:25 +08:00
@oott123 exec可以执行系统命令,如果系统被入侵,执行个passwd什么的,不过这都什么年代了。
kiwi95
2015-08-15 12:09:25 +08:00
何必用PHP呢,是不是?楼主
bigdude
2015-08-15 14:14:49 +08:00
建议楼主多研究研究微信图片链接的参数,很容易就绕过这种问题,不要在这上面钻牛角尖。
realpg
2015-08-15 15:05:10 +08:00
我的环境imagick扩展可以正确处理webp格式,微信过来的颜色也不偏。
juneszh
2015-08-15 15:58:05 +08:00
@realpg 有没有哪里需要注意的?我的imagick怎么弄都支持不了在PHP里读webp, 但是命令行可以操作webp
realpg
2015-08-15 16:11:07 +08:00
@juneszh
编译imagemagick时候加上相关lib支持webp,然后编译imagick扩展时配置指向本机编译的imagemagick,出来的貌似就直接支持。
不过我们基本不这么处理webp,性能比较差,都是丢给后台进程处理
csx163
2015-08-15 16:15:58 +08:00
我看见有项目用七牛处理图片的
wdlth
2015-08-15 20:11:50 +08:00
LZ不检查GD和ImageMagick,怪到语言上也没用。
menc
2015-08-15 20:14:15 +08:00
微信URL中的webp改成jpg或者jpeg就是jpg了
juneszh
2015-08-15 23:57:32 +08:00
juneszh
2015-08-15 23:59:58 +08:00
@menc
@bigdude
这个接口的"下载多媒体"文件怎么通过参数改格式?
http://mp.weixin.qq.com/wiki/12/58bfcfabbd501c7cd77c19bd9cfa8354.html
iyaozhen
2015-08-16 00:04:58 +08:00
@juneszh 表示关注,这个接口不应该会获得 webp 格式的图片呀。
Balthild
2015-08-16 12:27:10 +08:00
楼主你不知道php exec可以指定只能执行某个目录中的可执行文件吗?故意黑php有意思吗
bombless
2015-08-17 08:13:06 +08:00
嘛,另外开个服务做转换,或者写扩展吧。PHP的C扩展都写不出你敢说你能写PHP?(逃

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

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

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

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

© 2021 V2EX