這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
前言
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
支援的功能
來源去向
擷取方式
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")}
注意
和官網一樣,修改圖片尺寸時支援scale、fit、cover三種模式,在使用fit或cover時都需要同時設定width、height,但是使用scale的話,width、height必須設定一個,也只能設定一個,同時設定的話會出錯。
其他
解鎖更多姿勢請參照測試代碼 tinify_test.go
測試
go get -u github.com/gwpp/tinify-gocd $GOPATH/src/github.com/gwpp/tinify-gogo test
寫在最後
平時項目比較趕,只能抽點午休時間寫寫,比較倉促,加上筆者水平有限所以可能會有不少問題。若是遇到BUG請及時 GitHub issue,或直接在文章後留言,筆者會儘快修複,謝謝。