【GO】画像処理【io.Reader】


画像を使っていると使いたい関数の関係でimageio.Readerに変換したいことがあったので、その辺のコーディングメモ。

最終的にはPipeを使います。

画像読み込みを使う

ファイル読み込みしたもの(*os.File)はio.Readerインターフェース実装しているため、テンポラリ画像を保存して読み込むことでio.Readerとして使えます。

実際には関数を分けているので違和感がなかったのですが、1つにまとめるとこんな感じでした。

違和感凄いですが特に問題なく使えます。

fileじゃなくてfile_outをそのままio.Readerとして使えば読み込みはいらない気もしますが、エラーは出ないけど0byteファイルとして認識されてしまいました。

画像のデコードが2回目できないのと同じ理由だろうか。

ちゃんとやる

bytes.Bufferio.Writerも持っているのでimage.Encodeに渡せる。

これで無駄なファイルを作らずに画像のio.Readerを使える。

 

bytes.Bufferは便利ですがio.Pipeを使った方が省メモリでいいよと見かける。

どちらでも問題なく使えた。

画像を使う以上はメモリを気にしたほうが良さそうなのでPipeを使うことにする。


コメントを残す

メールアドレスが公開されることはありません。