垂直翻转图片 · Golang
Go语言实现图片的上下翻转,用到标准库中的image包。将原图片的像素映射到上下颠倒的位置。
import "image"
func vFlip(m image.Image) image.Image {
mb := m.Bounds()
dst := image.NewRGBA(image.Rect(0, 0, mb.Dx(), mb.Dy()))
for x := mb.Min.X; x < mb.Max.X; x++ {
for y := mb.Min.Y; y < mb.Max.Y; y++ {
// 设置像素点,此调换了Y坐标以达到垂直翻转的目的
dst.Set(x, mb.Max.Y-y, m.At(x, y))
}
}
return dst
}
GIF版,改来改去能用了,可能并没有写到最好
func vFlipGIF(img *gif.GIF) {
p := img.Image[0].Rect.Max.Sub(img.Image[0].Rect.Min)
for i := 0; i < len(img.Image); i++ {
m := img.Image[i]
mb := m.Bounds()
dst := image.NewPaletted(image.Rect(
mb.Max.X,
p.Y-mb.Max.Y,
mb.Min.X,
p.Y-mb.Min.Y,
), m.Palette)
for x := mb.Min.X; x < mb.Max.X; x++ {
for y := mb.Min.Y; y < mb.Max.Y; y++ {
// 设置像素点,此调换了Y坐标以达到垂直翻转的目的
dst.Set(x, p.Y - y - 1, m.At(x, y))
}
}
img.Image[i] = dst
}
}