0

Я пытаюсь преобразовать файл изображения в строку Base64 с использованием класса BufferedImage. Несмотря на то, что код не дает ошибок компиляции/времени выполнения, вывод не выводится на консоль.Java-Output not printing

Eclipse IDE код:

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

Как это преодолеть?

+0

Я _really_ Интересно, почему вы думаете, что '«строка»' является допустимым именем формата. Вместо этого используйте '' jpg '' («bmp», «png» или все, что у вас на картинке). – Tom

ответ

2

Проблема заключается в ImageIO.write(image, type, bos);. В вашем случае тип "String", но это, скорее всего, неверный формат. Чтобы увидеть все имеющиеся в вашем распоряжении форматы, выполните ImageIO.getReaderFormatNames().

Если вы можете использовать Apache Commons, я предлагаю вам попробовать следующее закодировать файл в Base64: (fileImage имеет тип File):

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

Я изменил тип «String» на «jpg», и он сработал. Спасибо. – Lucy