私のプロジェクトでは、グレースケール 8BPP 形式の Base64 でエンコードされた画像を受け取ります。これを BufferedImage に変換するのに問題があります。ディスクから画像(f.ex png)を読み取り、それをbase64でエンコードし、プロセスを逆にするときに機能するコードがいくつかあります。
とにかく、受け取った文字列を変換しようとすると、すべてが機能しているように見えますが、null が返されます。呼び出されるのは catch ではなく、null を返す ImageIO.read です。
助言がありますか?base64 文字列が有効であることはわかっています。生ファイルとして保存して、画像を適切に表示するエディターで開いてみたからです。
これは私のコードです:
public static BufferedImage convertBase64StringToBufferedImage(String base64String){
byte[] pictureBytes = Base64Coder.decode(base64String);
InputStream is = new ByteArrayInputStream(pictureBytes);
BufferedImage image;
try {
image = ImageIO.read(new ByteArrayInputStream(pictureBytes));
} catch (IOException e) {
log.error(e.getMessage(), e);
return null;
}
return image;
}