2012-04-20 4 views
0

Приведенный ниже метод возвращает данные из InputStream как строка где строка будет построена с использованием StringBuilderданные изображения Java InputStream

String getBytes(InputStream is) throws IOException{ 
    StringBuilder sb = new StringBuilder(); 
    int ch; 
    while ((ch = is.read()) != -1) sb.append((char)ch); 
    is.close(); 
    return sb.toString(); 
} 

, но этот метод не работает должным образом для данных изображения. лучшим решением является построение аналогичного метода, но возвращающий байт [], а не строка. можно показать мне, как?

ответ

2

Надеюсь, это то, что вы ищете. Я использую эту функцию для своего приложения Imgur, которое требует изображения в виде ByteArray.

static File imgFile; 
static ByteArrayOutputStream imgStream = new ByteArrayOutputStream(); 

public static void bufferImage() { 
     try { 
       BufferedImage bufImg = ImageIO.read(imgFile); 
       ImageIO.write(bufImg, getExtension(imgFile), imgStream); 
     } catch (IOException ex) { 
       System.out.println("Error buffering image"); 
      } 
    } 

Я также могу предоставить функцию getExtension, если вы хотите.

+0

+1 Я посмотрел на этот вопрос и подумал: «Ого, с чего начать?». К счастью, вы перешли прямо к «Как решить». :) –

+0

Я просто использовал IOUtils.toByteArray (...). к сожалению, я получил эту ошибку: Исключение в потоке «pool-1-thread-1» java.lang.ExceptionInInitializerError. я понятия не имею, почему – Dagon

Смежные вопросы