将画布的内容发送到Java服务器并将其保存为图像
问题描述:
好吧,基本上我开发了一个简单的图像上传系统。用户选择本地图像(使用HTML5 File/FileReader API),并且能够在确认结果之前对其进行裁剪。将画布的内容发送到Java服务器并将其保存为图像
最终结果在画布中查看,以便将其发送到我使用toDataURL的服务器。后端服务器是一个NodeJS服务器,然后需要对Java服务器进行REST调用,该服务器将从数据创建映像文件并将其保存到磁盘。
toDataURL的结果格式如下:data:image/png; base64,ENCODED DATA。
我需要在Java服务器上将字符串转换为适当的二进制表示形式吗?
答
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import javax.imageio.ImageIO;
import javax.xml.bind.DatatypeConverter;
public class test {
public static void main (String[] args){
try{
// remove data:image/png;base64, and then take rest sting
String img64 = "64 base image data here";
byte[] decodedBytes = DatatypeConverter.parseBase64Binary(img64);
BufferedImage bfi = ImageIO.read(new ByteArrayInputStream(decodedBytes));
File outputfile = new File("saved.png");
ImageIO.write(bfi , "png", outputfile);
bfi.flush();
}catch(Exception e)
{
//Implement exception code
}
}
}
答
你必须用+,如果你的base64Image有空间字符,那么你必须删除数据替换空间:图像/ PNG; BASE64,从base64Image的开始。除非您替换空格字符,否则无法获得正确的图像。那么你可以使用Base64解码
yourBase64String = yourBase64String.replace('','+');
yourBase64String = yourBase64String.substring(22);
请参阅:http://*.com/questions/469695/decode-base64-data-in-java – 2012-01-09 21:51:42
[上传'canvas'图像数据到服务器](http://*.com/问题/ 1590965 /上载-画布图像数据到所述服务器) – 2012-01-09 21:53:28