美文网首页GolangGo语言我爱编程
Tinify API client for Golang——ti

Tinify API client for Golang——ti

作者: gwpp | 来源:发表于2017-06-13 13:11 被阅读389次

    前言

    Tinify是一个提供图片compress、resize 服务的网站,在肉眼看不失真的基础上能够极大的压缩图片文件大小,具体介绍可以看他们的官网 https://tinify.com

    Tinify官方提供了很多语言的SDK,但是并没有Golang的。前几天写了一篇文章 《Golang + Tinypng实现图片压缩》,里面谈到了Golang使用Tinify官方提供的 HTTP API client 实现compress的一些想法,但是毕竟简单,所以工作之余在官方 HTTP API client的基础上模仿官方其他语言的实现,使用Golang实现了一个Golang版本的 Tinify API client——tinify-go

    Github

    https://github.com/gwpp/tinify-go

    支持的功能

    • 图片压缩
    • 修改图片尺寸

    来源去向

    • 图片来源
      • 文件
      • 二进制流
      • URL
    • 处理后的图片去向
      • 文件
      • 二进制流

    获取方式

    go get -u github.com/gwpp/tinify-go
    

    一些示例

    • 压缩图片
    func TestCompressFromFile(t *testing.T) {
        Tinify.SetKey(Key)
        source, err := Tinify.FromFile("./test.jpg")
        if err != nil {
            t.Error(err)
            return
        }
    
        err = source.ToFile("./test_output/CompressFromFile.jpg")
        if err != nil {
            t.Error(err)
            return
        }
        t.Log("Compress successful")
    }
    
    • 修改图片尺寸
    func TestResizeFromBuffer(t *testing.T) {
        Tinify.SetKey(Key)
    
        buf, err := ioutil.ReadFile("./test.jpg")
        if err != nil {
            t.Error(err)
            return
        }
        source, err := Tinify.FromBuffer(buf)
        if err != nil {
            t.Error(err)
            return
        }
    
        err = source.Resize(&Tinify.ResizeOption{
            Method: Tinify.ResizeMethodScale,
            Width:  200,
        })
        if err != nil {
            t.Error(err)
            return
        }
    
        err = source.ToFile("./test_output/ResizesFromBuffer.jpg")
        if err != nil {
            t.Error(err)
            return
        }
        t.Log("Resize successful")
    }
    
    • 注意
      和官网一样,修改图片尺寸时支持scalefitcover三种模式,在使用fit或cover时都需要同时设置width、height,但是使用scale的话,width、height必须设置一个,也只能设置一个,同时设置的话会出错。

    • 其他
      解锁更多姿势请参照测试代码 tinify_test.go

    测试

    go get -u github.com/gwpp/tinify-go
    cd $GOPATH/src/github.com/gwpp/tinify-go
    go test
    

    写在最后

    平时项目比较赶,只能抽点午休时间写写,比较仓促,加上笔者水平有限所以可能会有不少问题。若是遇到BUG请及时 GitHub issue,或直接在文章后留言,笔者会尽快修复,谢谢。

    相关文章

      网友评论

        本文标题:Tinify API client for Golang——ti

        本文链接:https://www.haomeiwen.com/subject/jjedqxtx.html