我想將像素的所有藍(lán)色值更改為 255,如果它等于 20。我讀取源圖像,將其繪制為新的 image.RGBA,以便我可以修改像素。但是,當(dāng)我獲取輸出圖像(在執(zhí)行程序之后)并將其作為輸入提供,并在 IF 塊內(nèi)放置一個(gè)調(diào)試點(diǎn),并在調(diào)試模式下運(yùn)行程序時(shí),我看到調(diào)試器在多點(diǎn)停止在那里。這意味著,我沒(méi)有正確修改圖像。誰(shuí)能告訴我,如何修改像素并正確保存?非常感謝func changeOnePixelInImage() { imgPath := "./source.png" f, err := os.Open(imgPath) check(err) defer f.Close() sourceImage, _, err := image.Decode(f) size := sourceImage.Bounds().Size() destImage := image.NewRGBA(sourceImage.Bounds()) draw.Draw(destImage, sourceImage.Bounds(), sourceImage, image.Point{}, draw.Over) for x := 0; x < size.X; x++ { for y := 0; y < size.Y; y++ { pixel := sourceImage.At(x, y) originalColor := color.RGBAModel.Convert(pixel). (color.RGBA) b := originalColor.B if b == 20 { b = 255 // <--- then i swap source and destination paths, and debug this line } c := color.RGBA{ R: originalColor.R, G: originalColor.G, B: b, A: originalColor.A, } destImage.SetRGBA(x, y, c) } } ext := filepath.Ext(imgPath) newImagePath := fmt.Sprintf("%s/dest%s", filepath.Dir(imgPath), ext) fg, err := os.Create(newImagePath) check(err) defer fg.Close() err = jpeg.Encode(fg, destImage, &jpeg.Options{100}) check(err)}
更改像素值,保存并再次讀取返回原始顏色
滄海一幻覺(jué)
2022-06-27 17:31:03