2009-12-08 99 views
2

我的要求是這樣的。我需要使用文件連接從手機中讀取文件,創建該映像的縮略圖併發布到服務器。我能夠使用FileConnection API讀取圖像,並且還能夠創建縮略圖。如何在J2ME中將圖像轉換爲字節數組?

創建縮略圖後,我無法找到將該圖像轉換回byte []的方法。可能嗎?

代碼縮略圖轉換:

private Image createThumbnail(Image image) { 
     int sourceWidth = image.getWidth(); 
     int sourceHeight = image.getHeight(); 

     int thumbWidth = 128; 
     int thumbHeight = -1; 

     if (thumbHeight == -1) 
      thumbHeight = thumbWidth * sourceHeight/sourceWidth; 

     Image thumb = Image.createImage(thumbWidth, thumbHeight); 
     thumb.getGraphics(); 
     Graphics g = thumb.getGraphics(); 

     for (int y = 0; y < thumbHeight; y++) { 
      for (int x = 0; x < thumbWidth; x++) { 
       g.setClip(x, y, 1, 1); 
       int dx = x * sourceWidth/thumbWidth; 
       int dy = y * sourceHeight/thumbHeight; 
       g.drawImage(image, x - dx, y - dy); 
      } 
     } 

     Image immutableThumb = Image.createImage(thumb); 

     return thumb; 
    } 
+0

您需要顯示一些關於縮略圖轉換的代碼。你留下什麼類型的對象?您使用的是什麼J2ME /第三方API? – roryf 2009-12-08 13:38:59

回答

2

MIDP2.0的Image.getRGB()是你的朋友。可以獲取ARGB像素數據作爲一個int數組如下:

int w = theImage.getWidth(); 
int h = theImage.getHeight(); 
int[] argb = new int[w * h]; 
theImage.getRGB(argb, 0, w, 0, 0, w, h); 

的int陣列可以被用來作爲參數來Image.createRGBImage(),或在桌面Java,可以使用BufferedImage如下:

BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
img.setRGB(0, 0, w, h, ints, 0, w); 
+0

上傳圖像到服務器,我需要將此argb int數組轉換爲字節array.i可以使用此代碼執行此操作 ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); for(int i = 0; i Sanal 2009-12-09 06:36:34

+1

如果: 反序列化字節數組正確, 重建int數組, 發射寬度與圖像的高度到服務器, 然後嘗試來創建圖像的建議,則應能以任何你喜歡的格式保存圖像。 – funkybro 2009-12-09 12:31:24

相關問題