2017-11-25 70 views
0

我想要將bmp圖像轉換爲android中的字節數組以使用mobiwire設備進行打印Device, 我試圖使用此功能執行此操作,但打印機輸出爲空白圖像轉換bmp圖像爲Android中的字節數組獲取空白圖像

此功能:

public static byte[] decodeBitmap(Bitmap bmp){ 
     int bmpWidth = bmp.getWidth(); 
     int bmpHeight = bmp.getHeight(); 

     List<String> list = new ArrayList<String>(); //binaryString list 
     StringBuffer sb; 


     int bitLen = bmpWidth/8; 
     int zeroCount = bmpWidth % 8; 

     String zeroStr = ""; 
     if (zeroCount > 0) { 
      bitLen = bmpWidth/8 + 1; 
      for (int i = 0; i < (8 - zeroCount); i++) { 
       zeroStr = zeroStr + "0"; 
      } 
     } 

     for (int i = 0; i < bmpHeight; i++) { 
      sb = new StringBuffer(); 
      for (int j = 0; j < bmpWidth; j++) { 
       int color = bmp.getPixel(j, i); 

       int r = (color >> 16) & 0xff; 
       int g = (color >> 8) & 0xff; 
       int b = color & 0xff; 

       // if color close to white,bit='0', else bit='1' 
       if (r > 160 && g > 160 && b > 160) 
        sb.append("0"); 
       else 
        sb.append("1"); 
      } 
      if (zeroCount > 0) { 
       sb.append(zeroStr); 
      } 
      list.add(sb.toString()); 
     } 

     return hexList2Byte(commandList); 
    } 

我在我的測試使用Mobiwire裝置2G

回答

0
public static void convertToByteArray(BufferedImage image, String type) { 
    String imageString = null; 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

    try { 
     ImageIO.write(image, type, bos); 
     byte[] imageBytes = bos.toByteArray(); 
     bos.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

圖像首先編碼爲base64字符串使用上述方法,然後使用以下方法的base64編碼爲字節陣列..... –

0

這是最好的和簡單的解決方案編碼和解碼圖像字節數組。

用於將位圖圖像編碼爲字節數組的使用。

public String encodeTobase64(Bitmap image) { 
     Bitmap immage = getResizedBitmap(image, 100, 80); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     immage.compress(Bitmap.CompressFormat.PNG, 100, baos); 
     byte[] b = baos.toByteArray(); 
     String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); 
     Log.d("Image Log:", imageEncoded); 
     return imageEncoded; 
    } 

要取回圖像使用

public Bitmap decodeBase64(String input) { 
    try { 
     byte[] decodedByte = Base64.decode(input, Base64.DEFAULT); 
     return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
相關問題