0

Ich versuche, eine Bilddatei in Base64 String mit BufferedImage-Klasse zu konvertieren. Obwohl der Code keine Kompilierungs-/Laufzeitfehler enthält, wird die Ausgabe nicht in der Konsole gedruckt.Java - Ausgabe nicht gedruckt

Eclipse-IDE-Code:

public class BufferImage { 

public static void main(String args[]) { 
try 
{ 
    BufferedImage img = null; 
    img = ImageIO.read(new File("image.jpg")); // eventually C:\\ImageTest\\pic2.jpg 
    String image_string = encodeToString(img, "string"); 
    System.out.println(image_string); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
} 

public static String encodeToString(BufferedImage image, String type) 
{ 
    String base64String = null; 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    try { 
    ImageIO.write(image, type, bos); 
    byte[] imageBytes = bos.toByteArray(); 
    BASE64Encoder encoder = new BASE64Encoder(); 
    base64String = encoder.encode(imageBytes); 
    bos.close(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    return base64String; 
    } 
} 

Wie dies zu überwinden?

+0

ich _really_ fragen, warum Sie denken, dass '„string“' ist ein gültiger Formatname. Verwenden Sie "jpg" stattdessen ("bmp", "png" oder was auch immer Ihr Bild ist). – Tom

Antwort

2

Das Problem liegt in ImageIO.write(image, type, bos);. In Ihrem Fall ist der Typ "String", aber das ist höchstwahrscheinlich kein gültiges Format. Um alle verfügbaren Formate zu sehen, führen Sie aus.

Wenn Sie Apache Commons verwenden können, schlage ich vor, Sie versuchen, die folgenden Dateien zu Base64 codieren: (fileImage ist vom Typ File):

byte[] imageBytes = Base64.encode(FileUtils.readFileToByteArray(fileImage)); 
String base64String = new String(imageBytes); 
+0

Ich habe den Typ "String" in "jpg" geändert und es hat funktioniert. Danke .. – Lucy