45 lines
706 B
Go
45 lines
706 B
Go
package main
|
|
|
|
import (
|
|
"image"
|
|
_ "image/gif"
|
|
_ "image/jpeg"
|
|
"image/png"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func readImage(path string) (img image.Image) {
|
|
reader, err := os.Open(path)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
img, _, err2 := image.Decode(reader)
|
|
if err2 != nil {
|
|
log.Fatal(err2)
|
|
}
|
|
return img
|
|
}
|
|
|
|
func writeImage(path string, img image.Image) {
|
|
f, err := os.Create(path)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err := png.Encode(f, img); err != nil {
|
|
f.Close()
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func imgToNRGBA(img image.Image) *image.NRGBA {
|
|
b := img.Bounds()
|
|
r := image.NewNRGBA(b)
|
|
for x := b.Min.X; x < b.Max.X; x++ {
|
|
for y := b.Min.Y; y < b.Max.Y; y++ {
|
|
r.Set(x, y, img.At(x, y))
|
|
}
|
|
}
|
|
return r
|
|
}
|