https://github.com/loveczp/fqimg
FQimg, an image server
https://github.com/loveczp/fqimg
http-server image image-processing
Last synced: 5 months ago
JSON representation
FQimg, an image server
- Host: GitHub
- URL: https://github.com/loveczp/fqimg
- Owner: loveczp
- Created: 2016-03-26T05:33:37.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-05-31T03:18:02.000Z (about 3 years ago)
- Last Synced: 2024-06-20T11:13:13.405Z (almost 2 years ago)
- Topics: http-server, image, image-processing
- Language: Go
- Homepage:
- Size: 421 KB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README-cn.md
Awesome Lists containing this project
README
# FQimg
先来体验一下把
http://loveczp.github.io/fqimg/
这是一个用go语言写的实时图片服务器
有如下特性
* 动态处理图片。在请求的url上加上不同的尺寸参数就可以得到不同的尺寸的图片。
* 链式图片处理。对一个图片进行多重处理,这和unix的pipeline很类似。
* 高性能。得益于go语言的并发特性,此图片服务器的内存,cpu占用都很低,能同时处理的图片数量也很可观。
* webp图片格式支持。webp比之于jpeg,能更好的压缩图片的存储和传输体积,这点对移动应用尤为重要。
* 部署简单,只有一个可执行文件,不依赖任何外部运行库,只需将可执行文件拷贝到服务器即可执行。
* 支持多种输出格式和输出质量。当前能够支持jpeg,gif,png,bmp,webp格式,对于jpeg,gif,webp还能够支持自定义输出图片质量。
* 支持本地文件缓存,极大提高性能。
* 支持上传控制,确保只有可信IP才能上传。
* 支持跨域上传。
* 支持http 和 https
* 支持两种存储后端,本地文件, [seaweeddfs](https://github.com/chrislusf/seaweedfs)
# 示例
* **原图如下**
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0
* **动态剪裁的例子**
动态剪裁成400*400的图如下,当然高宽值可以设置成我们需要的任意值
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0?fill=400_400
* **链式处理的例子**
可以把图片裁剪成400*400后,还可以进行灰度处理。如下
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0?fit=200_300&grayscale
* **webp处理的例子。如下**
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0?webp=50
# 文档。
* 安装及运行
```bash
go get github.com/loveczp/fqimg
```
注意:
* 在windows上务必安装tdm-gcc否则无法编译安装通过
* go 版本必须大于等于1.8
然后运行
```bash
fqimg -c=path/to/config/file
```
* 图片上传
```bash
curl -F "file=@xxxxx.jpg" "http://fqimg.com/put"
```
把xxxx.jpg和fqimg.com换成你对应的信息可以得到如下结果。
["https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0"]
md5就是文件对应的MD5码,系统也是用这个来定位上传的文件。
访问该文件方法如下
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0
* 3.图片操作
* 每一个图片操作就是一个处理命令,命令有0个或者多个参数,参数包含参数名和参数值。参数是以url的参数的方式放在url尾部。即?后面就是参数。
例如
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0?fit=200_300
上面的命令表示对图片进行fit压缩,使图片能够容纳在一个200*300的框内。命令是fit。对应的参数是高和宽。
* 命令之间可以通过连接符号“&”把多个命令连接起来实现多重操作。
例如
https://fqimg.com/get/0657cae447e8c88f44c65b7e5f73cfe0?fit=200_300&grayscale
上面表示先推图像进行fit压缩操作,然后对操作后的结果进行灰度化 处理。
# 命令列表
| 命令名称 | 命令格式 | 例子 | 结果 |
|---|---|---|---|
|fit|fit=width_height
fit=width_height_filter| fit=100_300
fit=100_300_box
fit模式裁剪| |
| fill| fill=width_height
fill=width_height_filter
fill=width_height_filter_anchor| fill=100_300
fill=100_300_box
fill=100_300_box_top
fill模式裁剪|  |
| resize| resize=width_height
resize=width_height_filter| resize=100_300
resize=100_300_box
resize模式裁剪| |
| gamma| gamma
gamma=stength| gamma
gamma=234|  |
| contrast| contrast
contrast=stength| contrast
contrast=20
增加对比度|  |
| brightness| brightness
brightness=stength| brightness
brightness=0.5
增加亮度 |  |
| grayscale| grayscale| grayscale
变成灰度图 |  |
| invert| invert| invert
反相 |  |
| blur| blur
blur=stength| blur
blur=3.5
模糊|  |
| sharpen| sharpen
sharpen=stength| sharpen
sharpen=3.5
锐化|  |
| rotate90| rotate90| rotate90 正向旋转90度 |  |
| rotate180| rotate180| rotate180正向旋转180度|  |
| rotate270| rotate270| rotate270正向旋转270度|  |
| flipH| flipH| flipH水平翻转|  |
| flipV| flipV| flipV水平翻转|  |
| webp| webp
webp=quality| webp
webp=80
用80%的质量输出成webp格式|  |
| jpeg| jpeg
jpeg=quality| jpeg
jpeg=80
用80%的质量输出成jpeg格式|  |
| png| png| png 输出成png格式|  |
| gif| gif
gif=num
num为颜色数量| png
png=128
输出成128色的gif格式|  |
| mark| mark=mid
mark=mid_offx_offy
mark=mid_offx_offy_offp
mark=mid_offx_offy_offp_alpha
加水印 mid为配置文件中mark部分左边的key| mark=a
mark=a_10_10
mark=a_10_10_lu
mark=a_10_10_lu_255|  |