golang中的图像image处理之马赛克效果
生活随笔
收集整理的這篇文章主要介紹了
golang中的图像image处理之马赛克效果
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
馬賽克的原理比較簡(jiǎn)單,以一個(gè)個(gè)的顏色塊來(lái)平鋪整個(gè)圖片,同一個(gè)顏色塊使用一種顏色,顏色塊形狀不定,正方形,長(zhǎng)方形,六邊形,三角形都可以,而顏色塊中的顏色就根據(jù)算法不同而不同。
原圖如下
1、以顏色塊第一個(gè)點(diǎn)的顏色作為顏色塊的顏色
func image21() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())for i := 0; i < img1.Bounds().Max.X; i++ {for j := 0; j < img1.Bounds().Max.Y; j++ {if i%scale == 0 && j%scale == 0 {po := img1.At(i, j)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i+m, j+n, po)}}}}}f1, _ := os.Create("./image1-21.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil) }中間女生的背部這里效果不太好
2、以顏色塊中心點(diǎn)的顏色作為顏色塊的顏色
func image20() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())x := img1.Bounds().Max.X / scaley := img1.Bounds().Max.Y / scalefor i := 0; i < x; i++ {for j := 0; j < y; j++ {po := img1.At(i*scale+2, j*scale+2)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i*scale+m, j*scale+n, po)}}}}f1, _ := os.Create("./image1-20.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil) }3、取顏色塊內(nèi)隨機(jī)像素點(diǎn)最為顏色塊的顏色
func image22() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())for i := 0; i < img1.Bounds().Max.X; i++ {for j := 0; j < img1.Bounds().Max.Y; j++ {if i%scale == 0 && j%scale == 0 {d := rand.Intn(scale)po := img1.At(d+i, d+j)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i+m, j+n, po)}}}}}f1, _ := os.Create("./image1-22.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil) }相對(duì)而言,這個(gè)的效果要好一些。
總結(jié)
以上是生活随笔為你收集整理的golang中的图像image处理之马赛克效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 手机技巧:小米MIUI 14 系统优化超
- 下一篇: docopt——好用的Python命令行