golang生成占位图片的小型工具插件库goplaceholder的使用
golang生成占位图片的小型工具插件库goplaceholder的使用
goplaceholder是一个用于生成占位图片的小型Golang库。
安装
$ go get github.com/michiwend/goplaceholder
使用示例
下面是一个简单的使用示例,生成一个带有文本的占位图片:
package main
import (
"github.com/michiwend/goplaceholder"
"image/color"
"os"
)
func main() {
// 生成占位图片
// 参数说明:
// 1. 要显示的文本
// 2. 字体文件路径
// 3. 文本颜色 (RGBA)
// 4. 背景颜色 (RGBA)
// 5. 图片宽度
// 6. 图片高度
placeholder, err := goplaceholder.Placeholder(
"Lorem ipsum!",
"/usr/share/fonts/TTF/DejaVuSans-Bold.ttf",
color.RGBA{150, 150, 150, 255},
color.RGBA{204, 204, 204, 255},
400, 200)
if err != nil {
panic(err)
}
// 将图片保存到文件
file, err := os.Create("placeholder.png")
if err != nil {
panic(err)
}
defer file.Close()
err = png.Encode(file, placeholder)
if err != nil {
panic(err)
}
}
执行上述代码将生成一个400x200像素的灰色背景图片,上面显示"Lorem ipsum!"文本。
Web服务
goplaceholder也可以作为Web服务使用,支持以下请求格式:
/800x600.png
/800x600.png?text=foo
/500.png
/500.png?text=foo
你可以通过访问placeholder.michiwend.com
来试用这个Web服务。
更多关于golang生成占位图片的小型工具插件库goplaceholder的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang生成占位图片的小型工具插件库goplaceholder的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用goplaceholder生成占位图片的Golang工具库
goplaceholder是一个轻量级的Golang库,用于快速生成各种尺寸和样式的占位图片。下面我将介绍如何使用这个库以及提供一些示例代码。
安装
首先安装goplaceholder库:
go get github.com/icza/goplaceholder
基本用法
1. 生成简单占位图
package main
import (
"os"
"github.com/icza/goplaceholder"
)
func main() {
// 生成300x200的占位图
img := goplaceholder.Generate(300, 200)
// 保存为PNG文件
f, _ := os.Create("placeholder.png")
defer f.Close()
img.Encode(f, "png")
}
2. 自定义颜色和文字
package main
import (
"os"
"image/color"
"github.com/icza/goplaceholder"
)
func main() {
// 自定义配置
cfg := goplaceholder.Config{
Width: 400,
Height: 300,
BgColor: color.RGBA{220, 220, 220, 255}, // 浅灰色背景
TextColor: color.RGBA{100, 100, 100, 255}, // 深灰色文字
Text: "400x300", // 自定义文字
TextSize: 24, // 文字大小
}
img := goplaceholder.GenerateWithConfig(cfg)
f, _ := os.Create("custom_placeholder.png")
defer f.Close()
img.Encode(f, "png")
}
高级功能
1. 生成Base64编码的图片
package main
import (
"encoding/base64"
"strings"
"github.com/icza/goplaceholder"
)
func getBase64Placeholder(width, height int) string {
img := goplaceholder.Generate(width, height)
var sb strings.Builder
w := base64.NewEncoder(base64.StdEncoding, &sb)
img.Encode(w, "png")
w.Close()
return "data:image/png;base64," + sb.String()
}
func main() {
base64Img := getBase64Placeholder(250, 150)
println(base64Img) // 可以直接用在HTML中
}
2. HTTP服务提供占位图
package main
import (
"fmt"
"net/http"
"strconv"
"github.com/icza/goplaceholder"
)
func placeholderHandler(w http.ResponseWriter, r *http.Request) {
// 从URL参数获取宽高
width, _ := strconv.Atoi(r.URL.Query().Get("w"))
height, _ := strconv.Atoi(r.URL.Query().Get("h"))
if width <= 0 {
width = 300
}
if height <= 0 {
height = 200
}
// 生成图片
img := goplaceholder.Generate(width, height)
// 设置响应头
w.Header().Set("Content-Type", "image/png")
// 输出图片
img.Encode(w, "png")
}
func main() {
http.HandleFunc("/placeholder", placeholderHandler)
fmt.Println("Server running on :8080")
http.ListenAndServe(":8080", nil)
}
访问方式:http://localhost:8080/placeholder?w=400&h=300
自定义选项
goplaceholder.Config结构体支持以下自定义选项:
type Config struct {
Width int // 图片宽度
Height int // 图片高度
BgColor color.Color // 背景颜色
TextColor color.Color // 文字颜色
Text string // 显示的文字
TextSize int // 文字大小(像素)
TextX int // 文字X位置(默认居中)
TextY int // 文字Y位置(默认居中)
}
性能考虑
goplaceholder是一个轻量级库,生成图片非常快速。如果需要频繁生成大量占位图,可以考虑:
- 缓存已生成的图片
- 预生成常用尺寸的图片
- 使用并发生成(goroutine)
package main
import (
"sync"
"github.com/icza/goplaceholder"
)
func generatePlaceholders(sizes []struct{ w, h int }) []*image.Image {
var wg sync.WaitGroup
images := make([]*image.Image, len(sizes))
for i, size := range sizes {
wg.Add(1)
go func(idx int, width, height int) {
defer wg.Done()
img := goplaceholder.Generate(width, height)
images[idx] = &img
}(i, size.w, size.h)
}
wg.Wait()
return images
}
func main() {
sizes := []struct{ w, h int }{
{100, 100},
{200, 100},
{300, 150},
{400, 200},
}
images := generatePlaceholders(sizes)
// 使用images...
}
goplaceholder是一个简单但功能完善的占位图生成工具,适合在开发阶段快速生成测试用的图片占位符。