【Go】GoでバイナリからJPEG生成

Goでバイナリでファイルを受け取った際にそのまま加工したい時

結論 bytes パッケージを使おう Go言語 パッケージ bytes

ソースコード

package main

import (
	"bytes"
	"fmt"
	"image"
	"image/jpeg"
	"io/ioutil"
	"os"
)

func main() {

    // ファイルの読み込み
	buf, _ := ioutil.ReadFile("input.jpg")

    // バイナリファイルをReaderに読み込み
	reader := bytes.NewReader(buf)

    // 画像変換
	img, _, err := image.Decode(reader)
	if err != nil {
		fmt.Errorf("err %v", err)
	}

    // ファイル作成
	f, err := os.Create("output.jpg")
	if err != nil {
		fmt.Errorf("err %v", err)
	}
	defer f.Close()

	opt := jpeg.Options{
		Quality: 90,
	}

    // 今回はJPEGだがPNGとかでもできそう
	if err = jpeg.Encode(f, img, &opt); err != nil {
		fmt.Errorf("err %v", err)
	}
}


参考

Go言語 パッケージ bytes Reader

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA