分享
  1. 首页
  2. 文章

Tinify API client for Golang——tinify-go

gwpp · · 2113 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

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,或直接在文章后留言,笔者会尽快修复,谢谢。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:gwpp

查看原文:Tinify API client for Golang——tinify-go

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2113 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏