【问题标题】:Sending the contents of a canvas to a Java server and saving it as an image将画布的内容发送到 Java 服务器并将其保存为图像
【发布时间】:2012-01-09 21:45:56
【问题描述】:

好的,基本上我已经开发了一个简单的图片上传系统。用户选择本地图像(使用 HTML5 File / FileReader API)并能够在确认结果之前对其进行裁剪。

最终结果在画布中查看,以便将其发送到我正在使用 toDataURL 的服务器。后端服务器是 NodeJS 服务器,然后需要对 Java 服务器进行 REST 调用,Java 服务器将从数据创建图像文件并将其保存到磁盘。

toDataURL 的结果格式为:data:image/png;base64, ENCODED DATA。

我需要在 Java 服务器上将字符串转换为正确的二进制表示形式吗?

【问题讨论】:

标签: java javascript canvas


【解决方案1】:

您需要删除data:image/png;base64, 部分和base 64 decode 其余部分。

【讨论】:

    【解决方案2】:
    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    
         }
    
        }
    }
    

    【讨论】:

      【解决方案3】:

      对字符串进行 Base64 解码后,您将获得 PNG 文件形式的二进制图像。有关如何将 base64 字符串解码为字节的详细信息,请参阅this SO question

      【讨论】:

        【解决方案4】:

        如果你的base64Image有空格字符,你必须替换空格,然后你必须从base64Image的开头删除data:image/png;base64。除非您替换空格字符,否则您无法获得正确的图像。那么你可以使用Base64解码

        yourBase64String = yourBase64String.replace(' ', '+');

        yourBase64String = yourBase64String.substring(22);

        【讨论】:

          猜你喜欢
          • 2019-12-16
          • 1970-01-01
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-04
          相关资源
          最近更新 更多