2008-12-10 9 views
10

In meiner Java-Anwendung möchte ich ein JPEG herunterladen, es in ein PNG übertragen und etwas mit den resultierenden Bytes tun.Bild Transcodierung (JPEG zu PNG) mit Java

Ich bin mir fast sicher, ich erinnere mich an eine Bibliothek, um dies zu tun, ich kann mich nicht an seinen Namen erinnern.

Antwort

9

ImageIO können verwendet werden, um JPEG-Dateien zu laden und PNG-Dateien speichern (auch in eine ByteArrayOutputStream, wenn Sie nicht in eine Datei schreiben wollen).

12

javax.imageio sollte genug sein. Setzen Sie Ihre JPEG BufferedImage, speichern Sie es dann mit:

File file = new File("newimage.png"); 
ImageIO.write(myJpegImage, "png", file); 
22

Dies ist, was ich am Ende tun, ich war toooo weit außerhalb des Kastens zu denken, wenn ich die Frage gestellt ..

// these are the imports needed 
import java.awt.image.BufferedImage; 
import java.io.File; 
import javax.imageio.ImageIO; 
import java.io.ByteArrayOutputStream; 

// read a jpeg from a inputFile 
BufferedImage bufferedImage = ImageIO.read(new File(inputFile)); 

// write the bufferedImage back to outputFile 
ImageIO.write(bufferedImage, "png", new File(outputFile)); 

// this writes the bufferedImage into a byte array called resultingBytes 
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); 
ImageIO.write(bufferedImage, "png", byteArrayOut); 
byte[] resultingBytes = byteArrayOut.toByteArray(); 
+1

Code-Beispiel war hier hilfreich. Freut mich, nicht in eine neue Datei zu schreiben. – clay

0
BufferedImage bufferGambar; 
try { 

    bufferGambar = ImageIO.read(new File("ImagePNG.png")); 
    // pkai type INT karna bertipe integer RGB bufferimage 
    BufferedImage newBufferGambar = new BufferedImage(bufferGambar.getWidth(), bufferGambar.getHeight(), BufferedImage.TYPE_INT_RGB); 

    newBufferGambar.createGraphics().drawImage(bufferGambar, 0, 0, Color.white, null); 
    ImageIO.write(newBufferGambar, "jpg", new File("Create file JPEG.jpg")); 

    JOptionPane.showMessageDialog(null, "Convert to JPG succes YES"); 

} catch(Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 
+0

Was ist los mit diesem? –