发送base64';JSON上的d图像到PHP GD库

发送base64';JSON上的d图像到PHP GD库,php,javascript,json,base64,gd,Php,Javascript,Json,Base64,Gd,因此,我使用jquery/javascript将base64图像文本发送到php文件,如下所示: //Upload picture $('#uploadPictureBtnHtml').click(function(){ OpenLoader(); var baseEncPicData = $('#chosenPictureData').val(); $.ajax({ type:'POST', url:'upload_picture.php', dataT

因此,我使用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();
            }
        }
        });
});
$('#some_div').html('<img src="data:image/jpeg;base64,'+baseEncPicData+'" />');
$dataUno = htmlspecialchars(trim(urldecode($_POST['PicFile'])));
$dataDos = base64_decode($dataUno);
$data = imagecreatefromstring($dataDos);
$the_new_png = imagepng($data, $the_directory);
我知道这很好,因为如果我使用
baseEncPicData
变量并按如下方式输出它:

//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();
            }
        }
        });
});
$('#some_div').html('<img src="data:image/jpeg;base64,'+baseEncPicData+'" />');
$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
这让我相信它没有正确解码JSON,因为base64的图像中有一些字符被剥离。这只是一个假设。 不确定我做错了什么。任何帮助都会很棒。感谢您花时间阅读此内容。

删除此字符串:

htmlspecialchars(trim(urldecode($\u POST['PicFile'])))


。。。只需处理
$\u POST['PicFile']
。通过这种预处理,您可以将所有
+
字符(在Base64中允许)转换为空格(
),有效地将二进制文件变为二进制文件-为什么?这会解码JSON。除非有更好的方法。我这样做已经有一段时间了,所以如果有更好的解码方法出现,我不会感到惊讶。我很感谢你回答这个问题,现在就来试试这个。