2012-04-20 32 views
0

的方法,其中,該字符串將使用的StringBuilderjava的圖像數據的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(); 
} 

被構造但這種方法不工作爲適當的圖像數據。最好的解決方案是構建類似的方法,但返回byte []而不是字符串。能告訴我如何?

回答

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我看着那個問題和想法,「哇,從哪裏開始?」。幸運的是,你直接切入「如何解決」。 :) – 2012-04-20 01:49:22

+0

我剛剛使用IOUtils.toByteArray(...)。不幸的是我得到這個錯誤:線程「池1線程1」異常java.lang.ExceptionInInitializerError。我不知道爲什麼 – Dagon 2012-04-20 02:44:02