package main

import (
	"image"
	"image/jpeg"
	"os"
)

// rotateImage180函数用于将给定的图片旋转180度
func rotateImage180(img image.Image) image.Image {
	bounds := img.Bounds()
	width := bounds.Max.X
	height := bounds.Max.Y
	rotated := image.NewRGBA(image.Rect(0, 0, width, height))
	for y := 0; y < height; y++ {
		for x := 0; x < width; x++ {
			oldPos := image.Pt(x, y)
			newX := width - x - 1
			newY := height - y - 1
			newPos := image.Pt(newX, newY)
			rotated.Set(newPos.X, newPos.Y, img.At(oldPos.X, oldPos.Y))
		}
	}
	return rotated
}

func main() {
	// 打开原始图片文件
	file, err := os.Open("1.jpeg")
	if err != nil {
		panic(err)
	}
	defer file.Close()
	img, err := jpeg.Decode(file)
	if err != nil {
		panic(err)
	}
	// 对图片进行180度旋转
	rotatedImg := rotateImage180(img)
	// 创建输出文件
	outFile, err := os.Create("output.jpg")
	if err != nil {
		panic(err)
	}
	defer outFile.Close()
	// 将旋转后的图片编码并保存为新文件
	err = jpeg.Encode(outFile, rotatedImg, &jpeg.Options{Quality: 100})
	if err != nil {
		panic(err)
	}
}
