BufferedInputStream を画像に変換する
JPEG 形式の画像であると想定している、データベースからの BLOB の変換中に問題が発生しました。 、さらなる処理のために BufferedImage に変換されます。変換は失敗し、Image 変数は null のままです。
変換失敗の考えられる理由
コードを調べると、いくつかの潜在的な問題により変換が失敗する可能性があります。
-
データ取得: このコードは、blob.getBytes(1, blobLength) を使用して BLOB データを取得します。ただし、blobLength は long (64 ビット整数) として取得されますが、getBytes は int (32 ビット整数) を期待します。この不一致により、データが切り捨てられ、画像が正しく取得されない可能性があります。
-
画像検証: 開始点としては、uploadedInputStream ストリームに有効な画像が含まれていることを確認することをお勧めします。 ImageIO.write を使用してイメージをファイルに一時的に書き込み、それを再度読み込んで整合性を確認できます。
-
Blob コンテンツの処理: H2 データベースのドキュメントによると、Blob のコンテンツはメモリには保存されません。したがって、blob.getBytes を使用する代わりに、blob.getBinaryStream を使用して BLOB のストリーム表現を取得する必要があります。
解決策
問題を解決するには場合は、次のようにコードを変更してみてください:
さらに、uploadedInputStream をファイルに書き込み、再度読み込んで画像が含まれていることを確認して、その有効性を検証する必要があります。
以上がデータベースから BLOB を変換するときに `BufferedImage` が null になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。