日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang中的图像image处理之马赛克效果

發布時間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang中的图像image处理之马赛克效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

馬賽克的原理比較簡單,以一個個的顏色塊來平鋪整個圖片,同一個顏色塊使用一種顏色,顏色塊形狀不定,正方形,長方形,六邊形,三角形都可以,而顏色塊中的顏色就根據算法不同而不同。

原圖如下

1、以顏色塊第一個點的顏色作為顏色塊的顏色

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、以顏色塊中心點的顏色作為顏色塊的顏色

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、取顏色塊內隨機像素點最為顏色塊的顏色

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) }

相對而言,這個的效果要好一些。

總結

以上是生活随笔為你收集整理的golang中的图像image处理之马赛克效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。