Sending the contents of a canvas to a Java server and saving it as an image

前端 未结 4 1592
眼角桃花
眼角桃花 2021-02-09 03:06

Okay, basically I\'ve developed a simple image upload system. The user selects a local image (using the HTML5 File / FileReader API) and has the ability to crop it before confir

相关标签:
4条回答
  • 2021-02-09 03:40

    You need to remove the data:image/png;base64, part and base 64 decode the rest.

    0 讨论(0)
  • 2021-02-09 03:44
    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    
         }
    
        }
    }
    
    0 讨论(0)
  • 2021-02-09 03:44

    You have to replace space with + if your base64Image have space char, then you have to remove data:image/png;base64, from the beginning of the base64Image. Unless you replace space char, you can't get correct Image. then you can use Base64 decode

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

    yourBase64String = yourBase64String.substring(22);

    0 讨论(0)
  • 2021-02-09 04:01

    Once you Base64-decode the string, you will have the binary image, in the form of a PNG file. See this SO question for details on how to decode a base64 string into bytes.

    0 讨论(0)
提交回复
热议问题