Comment écrire une image encodée en Base64 dans un fichier?
J'ai encodé une image en chaîne à l'aide de Base64 . Je lis d'abord le fichier, puis le convertis en tableau d'octets, puis applique l'encodage en Base64 pour convertir l'image en chaîne.
Maintenant, mon problème est de savoir comment le décoder.
byte dearr[] = Base64.decodeBase64(crntImage);
File outF = new File("c:/decode/abc.bmp");
BufferedImage img02 = ImageIO.write(img02, "bmp", outF);
La variable crntImage
contient la représentation sous forme de chaîne de l'image.
En supposant que les données d'image soient déjà dans le format souhaité, vous n'avez pas besoin de l'image ImageIO
- vous avez juste besoin d'écrire les données dans le fichier:
// Note preferred way of declaring an array variable
byte[] data = Base64.decodeBase64(crntImage);
try (OutputStream stream = new FileOutputStream("c:/decode/abc.bmp")) {
stream.write(data);
}
(J'imagine que vous utilisez Java 7 ici. Si ce n'est pas le cas, vous devrez écrire une instruction try/finally manuelle pour fermer le flux.)
Si les données d'image n'est pas dans le format souhaité, vous devrez donner plus de détails.
Base64
APIbyte[] decodedImg = Base64.getDecoder().decode(encodedImg.getBytes(StandardCharsets.UTF_8));
Path destinationFile = Paths.get("/path/to/imageDir", "myImage.jpg");
Files.write(destinationFile, decodedImg);
Si votre image codée commence par quelque chose comme data:image/png;base64,iVBORw0...
, vous devrez supprimer la partie. Voir cette réponse pour un moyen facile de le faire.
Pas besoin d'utiliser BufferedImage, car vous avez déjà le fichier image dans un tableau d'octets
byte dearr[] = Base64.decodeBase64(crntImage);
FileOutputStream fos = new FileOutputStream(new File("c:/decode/abc.bmp"));
fos.write(dearr);
fos.close();
import Java.util.Base64;
.... Il suffit de préciser que cette réponse utilise le package Java.util.Base64 sans utiliser de bibliothèques tierces.
String crntImage=<a valid base 64 string>
byte[] data = Base64.getDecoder().decode(crntImage);
try( OutputStream stream = new FileOutputStream("d:/temp/abc.pdf") )
{
stream.write(data);
}
catch (Exception e)
{
System.err.println("Couldn't write to file...");
}