imagen guardar decodificar convertir codificar cambiar archivo java image base64 decode encode

java - guardar - Escribe la imagen codificada en Base64 en un archivo



image to base64 java 7 (5)

¿Cómo escribir una imagen codificada en Base64 en un archivo?

He codificado una imagen a una cadena usando Base64. Primero, leo el archivo, luego lo convierto a una matriz de bytes y luego aplico la codificación Base64 para convertir la imagen en una cadena.

Ahora mi problema es cómo decodificarlo.

byte dearr[] = Base64.decodeBase64(crntImage); File outF = new File("c:/decode/abc.bmp"); BufferedImage img02 = ImageIO.write(img02, "bmp", outF);

La variable crntImage contiene la representación de cadena de la imagen.


Con la API Base64 Java 8

byte[] decodedImg = Base64.getDecoder().decode(encodedImg.getBytes(StandardCharsets.UTF_8)); Path destinationFile = Paths.get("/path/to/imageDir", "myImage.jpg"); Files.write(destinationFile, decodedImg);

Si su imagen codificada comienza con algo como data:image/png;base64,iVBORw0... , tendrá que eliminar la parte. Vea esta respuesta para una manera fácil de hacer eso.


No es necesario utilizar BufferedImage, ya que ya tiene el archivo de imagen en una matriz de bytes

byte dearr[] = Base64.decodeBase64(crntImage); FileOutputStream fos = new FileOutputStream(new File("c:/decode/abc.bmp")); fos.write(dearr); fos.close();


Otra opción utilizando apache-commons:

import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; ... File file = new File( "path" ); byte[] bytes = Base64.decodeBase64( "base64" ); FileUtils.writeByteArrayToFile( file, bytes );


Prueba esto:

import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class WriteImage { public static void main( String[] args ) { BufferedImage image = null; try { URL url = new URL("URL_IMAGE"); image = ImageIO.read(url); ImageIO.write(image, "jpg",new File("C://out.jpg")); ImageIO.write(image, "gif",new File("C://out.gif")); ImageIO.write(image, "png",new File("C://out.png")); } catch (IOException e) { e.printStackTrace(); } System.out.println("Done"); } }


Suponiendo que los datos de la imagen ya están en el formato que desea, no necesita ImageIO de ImageIO en absoluto, solo necesita escribir los datos en el archivo:

// 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); }

(Supongo que está utilizando Java 7 aquí; de lo contrario, tendrá que escribir una declaración manual try / finally para cerrar la secuencia).

Si los datos de la imagen no están en el formato que desea, deberá proporcionar más detalles.