使用概览

基本用法

链式调用(推荐)

链式调用看起来非常简洁。

package main

import "github.com/fishtailstudio/imgo"

func main() {
    imgo.Load("background.png").
        Resize(250, 350).
        Insert("gopher.png", 50, 50).
        Save("out.png")
}

非链式调用

package main

import "github.com/fishtailstudio/imgo"

func main() {
    background := imgo.Load("background.png")
    background.Resize(250, 350)
    background.Insert("gopher.png", 50, 50)
    background.Save("out.png")
}

这个例子和上个例子是等效的。

读取图像

使用 ImGo 读取图像非常简单,你只要调用 imgo.Load() 方法即可。

imgo.Load("gopher.png")

该方法不仅可以读取本地文件,还支持以下输入格式。

  • 文件系统中图像的绝对路径或相对路径

  • 图片的 URL

  • Base64 编码的图像数据

  • *os.File 类型的文件实例

  • 实现了 image.Image 接口的类型实例

  • *imgo.Image 类型的实例

创建图像

使用 Canvas 方法可以创建一个指定长宽和颜色的画布。

package main

import (
    "awesomeProject/imgo"
    "image/color"
)

func main() {
    imgo.Canvas(500, 500, color.White).
        Save("out.png")
}

编辑图像

使用 LoadCanvas 方法获得图像实例后,就可以调用方法编辑图像了。

编辑图像的方法都会返回 *imgo.Image 类型的实例,因此才可以链式的调用。

图像输出

输出为文件

只要调用 Save 方法就可以将编辑好的图像保存为文件。

Save 方法接收一个字符串类型的文件路径参数,可以是绝对路径也可以是相对路径。

该路径参数需要带图像格式后缀,如 out.png

ImGo 会根据图像格式后缀输出相应格式的图像,无需其他操作。

支持的图像格式格式如下。

格式Mimetype

jpg

image/jpeg

png

image/png

bmp

image/x-ms-bmp

tiff

image/tiff

不支持 WEBP 格式的图像输出原因是 golang.org/x/image/webp 包只提供了 Decode 方法,没有提供 Encode 方法。

HTTP响应

ImGo 支持将编辑好的图像直接作为 HTTP 响应,使用方法如下。

package main

import (
    "awesomeProject/imgo"
    "net/http"
)

func main() {
    http.HandleFunc("/gopher", imgo.Load("gopher.png").HttpHandler)
    http.ListenAndServe(":8080", nil)
}

在本机运行上例,在浏览器访问 http://localhost/gopher 将能看到 gopher.png 图像。

最后更新于