火の狐 的个人博客

记录精彩的程序人生

Open Source, Open Mind,
Open Sight, Open Future!
  menu
292 文章
2704 浏览
0 当前访客
ღゝ◡╹)ノ❤️

通过这个 Go 项目搭建一个图片服务器竟然这么简单

你是否经常有这样的需求:

  • 裁剪图片
  • 转换图片格式
  • 旋转图片
  • 。。。

你可能要说这些现在各种工具很容易可以实现呀。的确如此。

不过,如果这些让你通过程序实现呢?比如七牛云图片的很多功能。

今天推荐给你一个这样的项目,其实是 Go 语言的一个工具库,可以通过它快速的搭建一个图片服务器,实现类似七牛云对图片的处理功能。

项目地址:https://github.com/pierrre/imageserver,Star 数 1.8k+。

一个简单的示例:

package main

import (
 "net/http"

 "github.com/pierrre/imageserver"
 imageserver_http "github.com/pierrre/imageserver/http"
 imageserver_http_gift "github.com/pierrre/imageserver/http/gift"
 imageserver_http_image "github.com/pierrre/imageserver/http/image"
 imageserver_image "github.com/pierrre/imageserver/image"
 _ "github.com/pierrre/imageserver/image/gif"
 imageserver_image_gift "github.com/pierrre/imageserver/image/gift"
 _ "github.com/pierrre/imageserver/image/jpeg"
 _ "github.com/pierrre/imageserver/image/png"
 imageserver_testdata "github.com/pierrre/imageserver/testdata"
)

func main() {
 http.Handle("/", &imageserver_http.Handler{
  Parser: imageserver_http.ListParser([]imageserver_http.Parser{
   &imageserver_http.SourceParser{},
   &imageserver_http_gift.ResizeParser{},
   &imageserver_http_image.FormatParser{},
   &imageserver_http_image.QualityParser{},
  }),
  Server: &imageserver.HandlerServer{
   Server: imageserver_testdata.Server,
   Handler: &imageserver_image.Handler{
    Processor: &imageserver_image_gift.ResizeProcessor{},
   },
  },
 })
 err := http.ListenAndServe(":8080", nil)
 if err != nil {
  panic(err)
 }
}

项目提供了一个高级示例,实现了:缩放、旋转、裁剪等。

图片

如果你对图片处理感兴趣,可以研究下这个库。