Bootstrap

golang 图片转1bit color bmp图片

问题背景

一些打印机需要的都是1bit color bmp图片,但是golang中没有直接的办法,官方image库最低bpp为8,打印机无法使用。

在github上找到了很多资源,都没有直接能转的,突然看到一个老外,可以支持plattered图片转位1bit color bmp图片,然后自己先把图片转位plattered黑白图片,继续使用该黑白图片转位1bit color bmp,果断写了一段测试代码,没想到直接成功了。

这样打印机就能直接用了。从而实现程序自动化打印。

解决方法

package main

import (
	"bufio"
	"github.com/sergeymakinen/go-bmp"
	"image"
	"image/color"
	"image/draw"
	_ "image/jpeg"
	_ "image/png"
	"os"
)

func main() {
	// 解码PNG图像
	file, err := os.Open("./logo.png")
	if err != nil {
		panic(err)
	}

	//img, _, err := image.Decode(file)
	//if err != nil {
	//	panic(err)
	//}

	// 解码图像
	src, _, err := image.Decode(bufio.NewReader(file))
	if err != nil {
		panic(err)
	}

	bounds := src.Bounds()
	palette := []color.Color{color.White, color.Black}
	dst := image.NewPaletted(bounds, palette)

	// 将src图像转换为Paletted图像
	draw.Draw(dst, bounds, src, image.ZP, draw.Src)

	// 打开一个BMP文件用于写入
	outFile, err := os.Create("output.bmp")
	if err != nil {
		panic(err)
	}
	defer outFile.Close()

	// 使用BMP编码器将图像编码为BMP格式并写入文件
	err = bmp.Encode(outFile, dst)
	if err != nil {
		panic(err)
	}
}

;