2012-01-09 97 views
8

好吧,基本上我開發了一個簡單的圖像上傳系統。用戶選擇本地圖像(使用HTML5 File/FileReader API),並且能夠在確認結果之前對其進行裁剪。將畫布的內容發送到Java服務器並將其保存爲圖像

最終結果在畫布中查看,以便將其發送到我使用toDataURL的服務器。後端服務器是一個NodeJS服務器,然後需要對Java服務器進行REST調用,該服務器將從數據創建映像文件並將其保存到磁盤。

toDataURL的結果格式如下:data:image/png; base64,ENCODED DATA。

我需要在Java服務器上將字符串轉換爲適當的二進制表示形式嗎?

+1

請參閱:http://stackoverflow.com/questions/469695/decode-base64-data-in-java – 2012-01-09 21:51:42

+0

[上傳'canvas'圖像數據到服務器](http://stackoverflow.com/問題/ 1590965 /上載-畫布圖像數據到所述服務器) – 2012-01-09 21:53:28

回答

1

一旦你Base64解碼字符串,你將有一個PNG文件的形式的二進制圖像。有關如何將base64字符串解碼爲字節的詳細信息,請參閱this SO question

5
import java.awt.image.BufferedImage; 
import java.io.ByteArrayInputStream; 
import java.io.File; 
import javax.imageio.ImageIO; 
import javax.xml.bind.DatatypeConverter; 

public class test { 
    public static void main (String[] args){ 
    try{ 
      // remove data:image/png;base64, and then take rest sting 
      String img64 = "64 base image data here"; 
     byte[] decodedBytes = DatatypeConverter.parseBase64Binary(img64); 
     BufferedImage bfi = ImageIO.read(new ByteArrayInputStream(decodedBytes));  
     File outputfile = new File("saved.png"); 
     ImageIO.write(bfi , "png", outputfile); 
     bfi.flush(); 
    }catch(Exception e) 
     { 
      //Implement exception code  
    } 

    } 
} 
0

你必須用+,如果你的base64Image有空間字符,那麼你必須刪除數據替換空間:圖像/ PNG; BASE64,從base64Image的開始。除非您替換空格字符,否則無法獲得正確的圖像。那麼你可以使用Base64解碼

yourBase64String = yourBase64String.replace('','+');

yourBase64String = yourBase64String.substring(22);

相關問題