2017-04-12 6 views
1

私は.pngイメージをコードに基づいて生成された<canvas>要素から取得しようとしています。Base64画像のデコードの問題 - 空の.pngファイルですか?

私が使用しているjavascriptがある:私はhtml2canvasライブラリがリンクされ

function canvityo() { 
     html2canvas(document.body, { 
      onrendered: function(canvas) { 
      document.body.appendChild(canvas); 
      var dataURL = canvas.toDataURL(); 

     $.ajax({ 
      type: "POST", 
      url: "imgprocess.php", 
      data: { 
      imgBase64: dataURL 
      } 
     }).done(function(o) { 
      console.log('saved'); 
     }); 
    } 
}); 
} 

持って、それは(私がappendChildを使用するので、それらを見ることができます)<canvas>良い作成し、今私はにそれら<canvas>を変換したいですphoto.pngファイルをサーバに保存するか、INSERT INTOblobとしてデータベーステーブルに保存します。

var dataURL = canvas.toDataURL(); 

は、この点にはすべてが(私は長いヘラのように見えるこのurl、取得するために管理することができます)正常に動作しているようです。奇妙な外観のため、私はbase64 decodingimageというファイルとして取得する必要があると確信しています。

imgprocess.phpは以下のようになります。

<?php 

$img = $_POST['data']; 
$img = str_replace('data:image/png;base64,', '', $img); 
$img = str_replace(' ', '+', $img); 
$fileData = base64_decode($img); 
$fileName = 'photo.png'; 
file_put_contents($fileName, $fileData); 

?> 

それは出力photo.pngファイルを行いますが、ファイルはemptyであり、私は非常に経験していないよと私は、この問題の原因を見つけるのに苦労してきました。

あなたはこの問題に対処する手助けをすることができますか?

+0

ダミアンの助けをありがとう;)朝からそれに対処する。 –

+1

@NeilBannetそれは助けてうれしい! –

答えて

1

データオブジェクトのキー名がimgBase64であるため、$img = $_POST['imgBase64'];ではなく、$img = $_POST['data'];である必要があります。

+1

私はそれが愚かなことを知っていた、あなたに感謝@moáois!私はできるだけ早く最高の答えとしてチックになるだろう:)今素晴らしい作品! –

+0

あなたは大歓迎です:) –

関連する問題