説明
PNG画像をJPEG形式で保存するには必要なパッケージ(image, image/png, image/jpeg)を読み込ませます。osパッケージのOpen()メソッドを使って読み込むPNG形式の画像があるパスを指定し開きます。無事に開くことができたら、imageパッケージのDecode()メソッドを使ってPNG画像を展開(デコード)します。
次にJPEG画像の保存先とファイル名をCreate()メソッドを使って生成します。ファイルが正常に作成されたらjpegパッケージのEncode()メソッドを使って画像を保存します。保存時のJPEG画質を示す数値は0〜100までの整数値を指定することができます。
package main
import (
"fmt"
"image"
"os"
_ "image/png"
"image/jpeg"
)
func main() {
// 開くファイル名
file, err := os.Open("/images/test.png")
if err != nil {
fmt.Println("ファイルが開けませんでした。")
os.Exit(1)
}
defer file.Close()
// PNG画像を解析(デコード)する
m, _, err := image.Decode(file)
if err != nil {
fmt.Println("画像を解析できませんでした。")
os.Exit(1)
}
// 保存するファイル名
savefile, err := os.Create("/images/test123.jpg")
if err != nil {
fmt.Println("保存するためのファイルが開けませんでした。")
os.Exit(1)
}
defer savefile.Close()
// JPEG形式で品質20で保存する
jpeg.Encode(savefile, m, &jpeg.Options{ 20 })
}