2012-01-09 21 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 –

+0

)質問/ 1590965/uploading-canvas-image-to-the-server) –

答えて

6

残りの部分はdata:image/png;base64,部分とbase 64 decode部分を削除する必要があります。

1

文字列をBase64でデコードすると、PNGファイルの形式でバイナリイメージが作成されます。 base64文字列をバイトにデコードする方法の詳細については、this SO questionを参照してください。 BASE64、base64Imageの初めから、画像/ PNG:

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は、スペース文字を持っている場合、あなたはデータを削除する必要が+でスペースを置き換えるを持っています。 space charを置き換えない限り、正しいImageを取得できません。 Base64デコードを使用できます。

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

yourBase64String = yourBase64String.substring(22);

関連する問題