私はwPaintと呼ばれるjQueryプラグインを使用して、ユーザーが独自の画像を描画できるようにしています。結果の画像を文字列としてサーバーに送信します。
data:image / png; base64、
以下の2つの方法を試しましたが、どちらの方法でも画像を保存できません。
アプローチ1
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
FileOutputStream fileOutputStream = new FileOutputStream("/home/arvind/Desktop/test.png");
fileOutputStream.write(imgByteArray);
fileOutputStream.close();
この場合、ファイルは書き込まれますが、画像は表示されません。ただし、ファイル拡張子を削除すると、サーバーに送信された文字列(つまり、imageDataにあるもの)が取得されます。
アプローチ2
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
InputStream in = new ByteArrayInputStream(imgByteArray);
BufferedImage bImageFromConvert = ImageIO.read(in);
ImageIO.write(bImageFromConvert, "png", new File("/home/arvind/Desktop/test.png"));
BufferedImage bImageFromConvertがnullであるため、ファイルの作成時に例外(IllegalArgumentException)が発生します。
Base64クラスは、Apache Commonsコーデックライブラリからのものであり、バージョン1.2です。
私が間違っていることはありますか?