我正在使用一个名为wPaint的jQuery插件来允许用户绘制自己的图像.我将生成的图像作为字符串发送到服务器,作为以字母开头的字符串
数据:图像/ PNG; BASE64,
我尝试了下面的两种方法,但两种方法都无法存储图像.
方法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();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,文件被写入但不显示图像.但是,当我删除文件扩展名时,我得到发送到服务器的字符串(即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"));
Run Code Online (Sandbox Code Playgroud)
BufferedImage bImageFromConvert为null,因此在创建文件时会出现异常(IllegalArgumentException).
Base64类来自apache commons编解码器库,版本为1.2.
有什么我做错了吗?
最初我使用以下代码将数据发送到服务器.
$.ajax({
url : '/campaign/holiImageUpload.action',
type : 'POST',
data : "image=" + $("#wPaint2").wPaint("image")
success :function(data){
}
});
Run Code Online (Sandbox Code Playgroud)
现在我使用以下代码将数据发送到服务器
var imgData = $("#wPaint2").wPaint("image");
$.ajax({
url : '/campaign/holiImageUpload.action',
type : 'POST',
data : {image : imgData},
success :function(data){
}
});
Run Code Online (Sandbox Code Playgroud)
在服务器端,这是最终代码:
String imageData = parameterParser.getStringParameter("image", "");
try {
imageData = imageData.substring(22);
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
InputStream in = new ByteArrayInputStream(imgByteArray);
BufferedImage bufferedImage = ImageIO.read(in);
ImageIO.write(bufferedImage, "png", new File("/home/arvind/Desktop/test.png"));
catch(Exception ex){
ex.printStrackTrace();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7255 次 |
| 最近记录: |