8
votes

Envoi du contenu d'une toile à un serveur Java et le sauver comme une image

D'accord, fondamentalement, j'ai développé un système de téléchargement d'image simple. L'utilisateur sélectionne une image locale (à l'aide de l'API de fichier HTML5 / FileReader) et a la capacité de le recadrer avant de confirmer le résultat.

Le résultat final est visualisé dans une toile afin de l'envoyer au serveur que j'utilise Todatauf. Le serveur Backend est un serveur Nodejs qui doit ensuite apporter un appel de repos à un serveur Java qui créera un fichier image à partir des données et enregistrera-le sur le disque.

Les résultats de Todaaurl sont sous la forme: Données: image / png; base64, données codées.

Que aurais-je besoin sur le serveur Java pour convertir la chaîne en une représentation binaire appropriée?


4 Réponses :


6
votes

Vous devez supprimer les données : image / png; base64, partie et Base 64 décode le reste.


0 commentaires

1
votes

Une fois que vous avez basé64-décodez la chaîne, vous aurez l'image binaire, sous la forme d'un fichier PNG. Voir Cette question à la question pour plus de détails sur la décoder une chaîne de base64 en octets.


0 commentaires

5
votes
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 commentaires

1
votes

Vous devez Remplacer SPACE avec + si votre base64Image a de l'espace Char, alors vous devez supprimer les données: image / png; base64, du début de la base64Image. À moins que vous remplaciez l'espace, vous ne pouvez pas obtenir une image correcte. Ensuite, vous pouvez utiliser la décode de base64

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

YourBase64String = YourBase64String.Substring (22);


0 commentaires