天気館

新米旦那うぇずの日々ちょっとしたことを綴る日記。結婚から始まる秘密の日記。結婚生活からアニメ雑談まで。

新米旦那うぇずの嫁には秘密の日記

【Java】InputStreamの罠

Streamはファイルデータではなく、あくまでデータストリーム

今週も仕事が忙しくブログが更新できなかったFeADうぇずです...。完全にブログ更新止まっていますね。悲しい。

週末に「なのはDetonation」を観に行った話や、ふるさと納税に納税した話、あとちょっと美味しいランチを食べに行ったらホントに美味しかった話とか色々書きたいことがあるのですが...

だがしかし今日書くのは仕事の話というーーー!!!

もうね。目から鱗な発見だったから。健忘録的な意味合いも込めてブログ書きます。

ここからはJavaのお話。

最近、サイトの中で画像ファイルを扱うことがあって。
普段はFileクラスで画像データを編集しているのですが、ふと、InputStreamクラスの方が実ファイル作らないから処理が早いんじゃないかと思い改修していたのですが。。。

何だろう。変換は上手くいっているはずなのに、全体通しての処理がうまくいかない...。

一体何が起きているのか、と色々手探り調査してみたところ。やっと分かりました。

そう。それが

「Streamはファイルデータではなく、あくまでデータストリーム」

ということ。

どういうことかというと。あくまでストリームなので、「1つのデータの流れ」として画像データを保持しているのです。
なので、一度画像サイズを変換する処理にInputStreamを使ってしまうと、その後サイト上に画像を表示する為にBase64に変換する必用があるのですが、その変換処理にInputStreamを指定しても変換時に0byteになってBase64が生成されないという...!!!ね!

もしかすると、ちゃんと技術系の学校とかで勉強していると当たり前なのかもしれないですが。自分、文系だったので...。すみません、知りませんでした...。

FileクラスからInputStreamクラスを使うようになってから上手く画像が出力されなくなって...。データを追いかけている時になんかBase64が作られなくなっていることに気づいたのです。

サイズ縮小に加えて、回転やトリミングとかもやっていたので、その部分でも上手くいっていなかったのです。

本当に。プログラムの世界は奥が深い。

まだまだ未熟だなと実感した一週間なFeADうぇずでした!!週末だ休むぞやっほーーーい!