问题背景
一些打印机需要的都是1bit color bmp图片,但是golang中没有直接的办法,官方image库最低bpp为8,打印机无法使用。
在github上找到了很多资源,都没有直接能转的,突然看到一个老外,可以支持plattered图片转位1bit color bmp图片,然后自己先把图片转位plattered黑白图片,继续使用该黑白图片转位1bit color bmp,果断写了一段测试代码,没想到直接成功了。
这样打印机就能直接用了。从而实现程序自动化打印。
解决方法
package mainimport ("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)}
}