buaazp / zimg

A lightweight and high performance image storage and processing system.
http://zimg.buaa.us
BSD 3-Clause "New" or "Revised" License
2.69k stars 402 forks source link

PNG上传后404问题 #131

Closed kfeng0806 closed 8 years ago

kfeng0806 commented 8 years ago

上传PNG格式图片后根据链接打开后返回404 添加p=0参数后返回原图正常显示 imagemagick先是按照install文档中的6.9.1-10版本安装 然后又换了最近的6.9.3-2依然出现404的情况 请问是imagemagick版本导致转换PNG出现的问题吗? 图片库都重装和更新过了

buaazp commented 8 years ago

是的,装imagemagick之前得装libpng-dev这种png开发包。

kfeng0806 commented 8 years ago

我uninstall imagemagick之后把apt-get里装的libpng12-dev卸载了然后去官网下载编译安装了官方最新的libpng以后重新安装imagemagick依然出现了png 404的情况

2016/01/29 09:05:24:748364 [ERROR] 111.151.113.154 fail pic:0fb9f4aaa1e5335fb8b9f9cbfbd33292 w:0 h:0 p:1 g:0 x:-1 y:-1 r:0 q:90 f:none
2016/01/29 09:05:26:628986 [ERROR] 111.151.113.154 fail pic:0fb9f4aaa1e5335fb8b9f9cbfbd33292 w:0 h:0 p:1 g:0 x:-1 y:-1 r:0 q:90 f:none

从zimg的错误日志也看不来什么

apt-get安装时显示开发包都已经有安装过

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libpng12-dev' instead of 'libpng-dev'
libgif-dev is already the newest version.
libjpeg-dev is already the newest version.
libmagickcore5 is already the newest version.
libmagickwand5 is already the newest version.
libmemcached-dev is already the newest version.
libwebp-dev is already the newest version.
libevent-dev is already the newest version.
libpng12-dev is already the newest version.

系统环境是ubuntu 14.03

buaazp commented 8 years ago

imagemagick是怎么装的?apt-get的话需要安装这些开发包:libmagickcore5 libmagickwand5

kfeng0806 commented 8 years ago

这两个开发包在我上面提到的apt-get log中显示已经是最新版本并且安装了。 imagemagick目前不是通过apt-get安装的,一开始尝试过用apt-get安装,但是zimg貌似不支持那个版本的。 后来就根据您install文档里的官方6.9.1-10版本和方法wget到本地编译安装了才可以正常运行,测试中其他格式例如jpg,gif,webp都能正常的输出,只有png出现404的问题。

buaazp commented 8 years ago

我大约知道是怎么回事了,imagemagick在自己编译的时候,需要通过PKG_CONFIG来查找libpng的链接库所在位置,你的libpng是自己手动安装的,所以pkg-config不知道你装在哪儿,导致imagemagick找不到libpng的库。

step 1. 确认一下你自己编译的libpng装到哪儿了,我举个例子,比如我安装在这儿:

/Users/zippo/local/libpng/

同时检查一下自己当前的pkg-config环境变量是啥:

echo $PKG_CONFIG_PATH

step 2. 自己手动设置PKG_CONFIG_PATH这个环境变量,在里面加上libpng编译好之后生成的pkg-config配置文件的路径:

export PKG_CONFIG_PATH=/Users/zippo/local/libpng/lib/pkgconfig:$PKG_CONFIG_PATH

再次检查环境变量里有没有包含libpng的路径:

echo $PKG_CONFIG_PATH

step 3. 这时候再去build imagemagick应该就能找到libpng了。

kfeng0806 commented 8 years ago

感谢回复 我是apt-get安装的libpng12-dev 按照以下设置了PKG_CONFIG_PATH路径以及添加link

export PKG_CONFIG_PATH=/usr/bin/libpng-config
libpng-config --L_opts

然后按照install文档中重新编译imagemagick以后重新启动zimg png可以正常显示了 目前问题已经解决

gouhan commented 6 years ago

为什么imagemagick 比较新的版本6.9之后就不能支持png?

wangyp0701 commented 4 years ago

apt install pkg-config