zimg是一个轻量级且强大的图片服务器,安装及使用都非常简单。源码包只有1M,编译出来的二进制程序只有700多KB,而运行起来只占用了11M。安装时只需要将源码依赖的环境安装好,直接编译运行即可。上传后的图片在一个指定的目录下,默认是在bin/img目录下。获取图片时可指定参数来获取指定样式的图片,如大小、质量、旋转等。
缺点:好像不能删除图片,在原图存储的目录下会缓存指定参数的图片。
一、安装依赖库
apt update
apt install cmake
apt install automake
apt install build-essential
apt install libevent-dev
apt install libjpeg-dev
apt install libgif-dev
apt install libpng-dev
apt install libwebp-dev
apt install libssl-dev
apt install libmemcached-dev
安装magicwand库
wget https://master.dl.sourceforge.net/project/imagemagick/old-sources/6.x/6.8/ImageMagick-6.8.8-10.tar.gz
tar -zxvf ImageMagick-6.8.8-10.tar.gz
cd ImageMagick-6.8.8-10/
#把magicwand库安装到/usr/local目录下
./configure --prefix=/usr/local
make
make install
注意事项
1. 不要使用apt安装magicwand库
apt install libmagickwand-dev
magickwand库不要使用apt install 安装。高版本的magicwand库>= 6.8.9-8有bug,导致能够成功编译zimg库,也能正常运行,上传图片,但获取图片时报错,错误信息如下
magick/semaphore.c:346: LockSemaphoreInfo: Assertion `semaphore_info != (SemaphoreInfo *) ((void *)0)' failed.
此错误在github上有相关的issue。
2. 不要使用其他版本安装magicwand库
此版本亲测可以正常编译,正常运行。使用6.6.8-10版本magicwand库就不能正常编译成功。
二、下载源码&配置
1. 下载zimg源码
wget https://github.com/buaazp/zimg/archive/v3.1.0.tar.gz
2. 编译依赖库LuaJIT库
LuaJIT库在源码压缩包里内置,路径为deps/LuaJIT-2.0.3.tar.gz。可使用以下指令进行编译。
cd deps
tar zxf LuaJIT-2.0.3.tar.gz
cd LuaJIT-2.0.3
make
以下是源码里的Makefile文件,但不太清楚是如何执行的,所以直接使用了相关的指令进行执行。
PREFIX=/usr/local/zimg
PWP=$(shell pwd)
libluajit=./deps/LuaJIT-2.0.3/src/libluajit.a
deps=$(libluajit)
all: $(deps)
mkdir -p build/zimg
cd build/zimg; cmake $(PWD)/src; make; cp zimg $(PWD)/bin
debug: $(deps)
mkdir -p build/zimg
cd build/zimg; cmake -DCMAKE_BUILD_TYPE=Debug $(PWD)/src; make; cp zimg $(PWD)/bin
$(libluajit):
cd deps; tar zxf LuaJIT-2.0.3.tar.gz; cd LuaJIT-2.0.3; make
clean:
rm -rf build
rm bin/zimg
cleanall:
rm -rf build
rm -f bin/zimg
rm -rf deps/LuaJIT-2.0.3
三、编译zimg
cd zimg-3.1.0
cmake src/
make
四、运行zimg
1. 运行程序
编译成功后的二进制文件在bin目录下,直接运行即可
cd bin
./zimg conf/zimg.lua
2. 个性化配置
配置文件是bin/conf/zimg.lua,可根据需要配置端口、缓存等。可根据官方文档进行配置http://zimg.buaa.us/documents/guidebook/