そこで、次のように jquery/javascript を使用して base64 画像テキストを php ファイルに送信します。
//Upload picture
$('#uploadPictureBtnHtml').click(function(){
OpenLoader();
var baseEncPicData = $('#chosenPictureData').val();
$.ajax({
type:'POST', url:'upload_picture.php', dataType:"json", data:{ PicFile: baseEncPicData },
success:function (upload_pic_data) {
if (upload_pic_data[0] == 'true') {
alert("it worked!");
CloseLoader();
}
else{
//upload_pic_data[1] will return PHP errors
alert("Why it didnt work: "+upload_pic_data[1]+" ");
CloseLoader();
}
}
});
});
baseEncPicData
変数を取得して次のように出力すると、これが正常に機能することがわかります。
$('#some_div').html('<img src="data:image/jpeg;base64,'+baseEncPicData+'" />');
それはうまく機能し、画像は問題なく表示されます。
これを PHP ファイルに送信すると、次のようにデコードして「再構築」します。
$dataUno = htmlspecialchars(trim(urldecode($_POST['PicFile'])));
$dataDos = base64_decode($dataUno);
$data = imagecreatefromstring($dataDos);
$the_new_png = imagepng($data, $the_directory);
私が受け取ったエラーは、次のような PHP でのみ発生します。
imagecreatefromstring() [function.imagecreatefromstring]: Empty string or invalid image
imagepng() expects parameter 1 to be resource
これは、base64 化されたイメージの一部である文字が削除されているため、JSON を正しくデコードしていないと私に信じさせます。これは単なる仮定です。何が間違っているのか正確にはわかりません。どんな助けでも素晴らしいでしょう。これを読んでくれてありがとう。