go-thumber, 在Golang中,动态JPEG缩略图代理

分享于 

5分钟阅读

GitHub

  繁體 雙語
dynamic JPEG thumbnailing proxy written in Golang
  • 源代码名称:go-thumber
  • 源代码网址:http://www.github.com/pixiv/go-thumber
  • go-thumber源代码文档
  • go-thumber源代码下载
  • Git URL:
    git://www.github.com/pixiv/go-thumber.git
    Git Clone代码到本地:
    git clone http://www.github.com/pixiv/go-thumber
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/pixiv/go-thumber
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    thumber

    go thumber是为速度设计的动态JPEG缩略图代理。 它仅实现 JPEG -> JPEG缩略图。

    功能:

    • Input: JPEG: 4:,4: 0,4: 2,:,greyscale:,和灰度模式
    • 输出:JPEG ( YCbCr 4: 4: 4 或者灰度)
    • 无颜色转换:数据保持在直接平面位缓冲区中,以提高效率和质量
    • 优化的JPEG解码:仅解码特定分辨率所需的数据
    • 使用libswscale进行非常快速但高质量的缩放( lanczos )

    不支持:

    • RGB或者CMYK模式输入图像被假定为正常格式转换。
    • 色彩subsampled输出的假设是低色谱缩略图可以从完全色度获益,因这里它没有实现简单。
    • 逐行解码/缓冲。当JPEG编码数据从网络流到/从网络传输时,当前原始的YCbCr图像在缩放之前和之后被缓冲。 这可以在片中工作,节省内存。
    • 其他图像格式
    • 裁剪

    依赖项

    • 1.3 ( http.Client.Timeout 和某些cgo特性需要)
    • libswscale ( 来自ffmpeg或者 libav )
    • libjpeg ( 最好是libjpeg涡轮)

    插件生成

    
    $ sudo apt-get install libswscale-dev libjpeg-dev
    
    
    $ mkdir -p"${GOPATH}/src/github.com/pixiv"
    
    
    $ cd"${GOPATH}/src/github.com/pixiv"
    
    
    $ git clone <repo URL>
    
    
    $ go install github.com/pixiv/go-thumber/thumberd
    
    
    
    

    在默认为PIC生成的硬化设置上,需要使用以下标志:

    
    $ go install -ldflags '-extldflags=-fno-PIC' github.com/pixiv/go-thumber/thumberd
    
    
    
    

    版本化在构建时是可能的。

    
    $ go install -ldflags '-X main.version v1.3' github.com/pixiv/go-thumber/thumberd
    
    
    
    

    用法

    thumberd是一个FastCGI服务器。 你还可以像这样运行独立的HTTP服务器:

    
    $ thumberd -local localhost:8080
    
    
    
    

    然后访问表单的URL:

    
    http://localhost:8080/w=128,h=128,a=0,q=95/upstream-host.com/some-image.jpg
    
    
    
    

    参数:

    
    w: thumbnail width (required)
    
    
    h: thumbnail height (required)
    
    
    q: JPEG quality (default 90)
    
    
    u: upscale if the source is smaller (default 1)
    
    
    a: force thumbnail aspect ratio. If 0, keep aspect (default 1)
    
    
    o: optimize JPEG (default 0)
    
    
    p: Factor to use when loading downsampled JPEGs. See below for explanation (default 2)
    
    
    
    

    JPEG格式时,JPEG格式允许直接加载缩小的版本( 通过部分解码来自JPEG的足够数据来重建较低分辨率的版本)。 在缩减中构建的downscaling相当不错,但不如 go thumber中使用的主lanczos重缩放算法好。 参数允许控制该特性的使用方式。

    将因素设置为 0禁用这里功能并始终加载全分辨率 JPEG,然后将它的downscales设置为目标大小。 将因子设置为 1将获得与请求的目标大小相同或者更高的分辨率。 1.5将所请求的大小乘以 1.5,这样,2将始终加载所需的分辨率,然后重新排序。 介于 0和 1之间的值没有意义,因为它们将加载像所请求的值比请求的值更小的图像。 这个格式只支持分辨率为 1的分辨率,它定义了一个下限,从JPEG中加载的实际分辨率为 rounded,从JPEG加载实际分辨率。

    实际上,0提供最高质量但不是非常有效,1最快,但显著降低质量,2在图像缩小到或者原始尺寸的较小的范围时提供了。 为了进行比较,ImageMagick似乎表现得像 p=1.


    动态  golang  Proxy  Thumb  JPEG  
    相关文章