我有这段代码可以将 RGBA 图像作为 PNG 文件写入磁盘。它适用于普通 RGBA 图像,其中每个像素都有
4
字节的信息用于其 4
RGBA 组件。
import (
"bufio"
"image"
"image/png"
"os"
)
// SaveToPngFile create and save an image to a file using PNG format
func SaveToPngFile(filePath string, m image.Image) error {
// Create the file
f, err := os.Create(filePath)
if err != nil {
return err
}
defer f.Close()
// Create Writer from file
b := bufio.NewWriter(f)
// Write the image into the buffer
err = png.Encode(b, m)
if err != nil {
return err
}
err = b.Flush()
if err != nil {
return err
}
return nil
}
4
字节与1
字节我手动修改了 RGBA 图像的像素缓冲区,以便每个像素只有一个与其关联的
1
字节,并且 1
字节仅包含 RGBA 的 R 分量。我如何修改上面的代码,以便我修改后的图像可以保存到磁盘并正确可视化为 8 位灰度单色,如下所列:
https://en.wikipedia.org/wiki/List_of_monochrome_and_RGB_color_formats
根据 @Volker 的建议,我切换到
image.Gray
为每个像素仅存储 1
字节。这看起来是标准方法。