. Di Golang, kita boleh menggunakan pakej imej untuk mengendalikan dan memproses imej. Artikel ini akan menumpukan pada cara menggunakan Golang untuk mencerminkan, memutar dan membalikkan imej serta memberikan contoh kod yang sepadan.
2. Operasi cerminan
Mencerminkan gambar adalah untuk menukar susun atur kiri dan kanan gambar. Di Golang, anda boleh menggunakan fungsi Flip pakej draw untuk melaksanakan operasi pencerminan. Berikut ialah kod contoh untuk mencerminkan dan menyimpan imej.package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布 flipImg := image.NewRGBA(img.Bounds()) // 镜像操作 draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipHorizontal) // 创建输出文件 output, err := os.Create("output_flip.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, flipImg, nil) }
Berikut ialah kod sampel untuk memutarkan imej 90 darjah mengikut arah jam dan menyimpannya.
package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布,大小为旋转后的尺寸 rotateImg := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx())) // 旋转操作 draw.Draw(rotateImg, rotateImg.Bounds(), img, img.Bounds().Min, draw.Rotate90) // 创建输出文件 output, err := os.Create("output_rotate.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, rotateImg, nil) }
4. Operasi flip
Operasi flip pada gambar adalah untuk menukar susun atur atas dan bawah gambar. Di Golang, anda boleh menggunakan fungsi Flip pakej draw untuk melaksanakan operasi flip.
Berikut ialah contoh kod untuk menyelak imej dan menyimpannya.
package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布 flipImg := image.NewRGBA(img.Bounds()) // 翻转操作 draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipVertical) // 创建输出文件 output, err := os.Create("output_flip.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, flipImg, nil) }
Dalam contoh kod di atas, kami menggunakan fungsi berkaitan pakej imej untuk mengendalikan imej. Antaranya, fungsi image.Decode digunakan untuk menyahkod fail imej dan mencipta objek imej. Sebelum beroperasi, kami mula-mula mencipta objek kanvas baharu (iaitu mencipta objek imej baharu), dan kemudian menggunakan fungsi pakej lukisan untuk melaksanakan operasi seperti pencerminan, putaran dan membalikkan. Akhir sekali, gunakan fungsi Encode pakej jpeg untuk menyimpan imej yang diproses dalam format JPEG.
5. Ringkasan
Melalui pengenalan dan contoh kod artikel ini, kami telah mempelajari cara menggunakan Golang untuk mencerminkan, memutar dan membalikkan imej. Dalam pembangunan sebenar, kami boleh melaksanakan operasi pemprosesan imej yang sepadan mengikut keperluan khusus untuk memenuhi keperluan projek. Pada masa yang sama, kami juga boleh menggabungkan dengan perpustakaan pemprosesan imej lain, seperti mengubah saiz, memangkas, dll., untuk melengkapkan lagi operasi imej yang lebih kompleks.
Saya harap artikel ini dapat membantu semua orang dalam pemprosesan imej Golang!
Atas ialah kandungan terperinci Manipulasi imej Golang: bagaimana untuk mencerminkan, memutar dan membalikkan imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!