为了账号安全,请及时绑定邮箱和手机立即绑定

我可以修改图像的像素值吗?

我可以修改图像的像素值吗?

Go
四季花海 2021-06-23 18:01:18
我想在 Go 中做这样的事情:for x := 0; x < width; x++ {    for y := 0; y < height; y++ {            // something similar to this:            src_img[x, y] = color.Black    }}是否可以这样做,只导入“图像”、“图像/jpeg”、“图像/颜色”?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

该image.RGBA类型是在内存中存储的图像,如果你想修改它们的首选方式。它实现了draw.Image接口,该接口具有设置像素的便捷方法:


Set(x, y int, c color.Color)

不幸的是,并非所有解码器都以 RGBA 格式返回图像。他们中的一些人以压缩格式保留图像,其中并非每个像素都可以修改。对于许多只读用例来说,这更快更好。但是,如果要编辑图像,则可能需要复制它。例如:


src, _, err := image.Decode(file)

if err != nil {

    log.Fatal(err)

}

rgba, ok := src.(*image.RGBA)

if !ok {

    b := src.Bounds()

    rgba = image.NewRGBA(image.Rect(0, 0, b.Dx(), b.Dy()))

    draw.Draw(rgba, rgba.Bounds(), src, b.Min, draw.Src)

}

// rgba is now a *image.RGBA and can be modified freely

rgba.Set(0, 0, color.RGBA{255, 0, 0, 255})


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信