Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保存图像时出错_Javascript_Php_Android_Crc - Fatal编程技术网

Javascript 保存图像时出错

Javascript 保存图像时出错,javascript,php,android,crc,Javascript,Php,Android,Crc,我在保存图像时遇到问题 主要问题是当我在Android 4.1.2(三星手机)上保存图像时 我在internet explorer或chrome上运行时没有问题 (也可以看看谷歌的解决方案,但没有找到任何有帮助的,例如) 在javascript中,我对图像进行了一些操作:旋转图像,按大小缩小图像: mystr = myCanvas.toDataURL("image/png"); 字符串类似于: 数据:图像/png;base64,Ivborw0Kggoaaaansuhueugaaalgaajyc

我在保存图像时遇到问题

主要问题是当我在Android 4.1.2(三星手机)上保存图像时

我在internet explorer或chrome上运行时没有问题

(也可以看看谷歌的解决方案,但没有找到任何有帮助的,例如)

在javascript中,我对图像进行了一些操作:旋转图像,按大小缩小图像:

mystr = myCanvas.toDataURL("image/png");
字符串类似于:

数据:图像/png;base64,Ivborw0Kggoaaaansuhueugaaalgaajycayaaac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

保存图像时(通过“POST”方法将其发送到php)。我有一个例外:

<br />
<b>Warning</b>:  imagecreatefrompng(): gd-png:  fatal libpng error: IHDR: CRC error in <b>*********</b> on line <b>105</b><br />
<br />
<b>Warning</b>:  imagecreatefrompng(): gd-png error: setjmp returns error condition in <b>*********</b> on line <b>105</b><br />
<br />
<b>Warning</b>:  imagecreatefrompng(): 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC ZpjcAAAABHNCSVQICAgIfAhkiAAABZ9JREFUeJzswQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in <b>/home/********/saveImage.php</b> on line <b>105</b><br />
<br />
<b>Warning</b>:  imagesx() expects parameter 1 to be resource, boolean given in <b>/home/*********************</b> on line <b>135</b><br />
<br />
<b>Warning</b>:  imagesy() expects parameter 1 to be resource, boolean given in <b>/home/*********************</b> on line <b>136</b><br />
<br />
<b>Warning</b>:  imagecreatetruecolor(): Invalid image dimensions in <b>/home/*********************</b> on line <b>176</b><br />
<br />
<b>Warning</b>:  imagecopyresized() expects parameter 1 to be resource, boolean given in <b>/home/*********************</b> on line <b>183</b><br />
<br />
<b>Warning</b>:  imagerotate() expects parameter 1 to be resource, boolean given in <b>/home/*********************</b> on line <b>211</b><br />
我没有“GET”方法,但正如我所知,对于javascript,我做了如下操作,也有错误,但要少得多

    xmlhttp.open("POST", "saveImage.php", true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
...
        xmlhttp.send("&scale=" + scaleRatio +
            "&top=0" +
            "&left=0" + 
// ...
            "&src=" + encodeURIComponent(s)); // **** src is the 300K string send to server.
在服务器站点上,我不知道是否应该解码图像300K字符串:

$imagebin = (urldecode)((string)$_POST['src']); // is decode necessary?
正如我所猜测的,我调用ajax的方式是不正确的(它可能有时解码字符串,有时不解码?)

。。。有时我会犯错误(我不是一次又一次地犯同样的错误——这似乎是随机解决的):

HTTP 403

我得到了php版本5.4.21。 gd版本:捆绑(兼容2.1.0)

有什么问题吗


谢谢:)

在我调查这个案件时,有两个主要问题导致了错误:

  • 当jquery$ajax使用ajax时,字符串不是由 默认值,但可能包含转义字符,尤其是在使用 $ajax,带有很长的解码字符串,例如 照片
  • 因此,我应该在客户端对字符串进行编码,即使我使用“POST”方法发送字符串,也就是按照以下代码(注意带星号的行并调用函数encodeURIComponent

    这就是为什么会出现错误,例如:

    imagecreatefrompng():gd png:致命的libpng错误:IHDR:CRC错误在

    不支持访问/saveImage.php

  • 对于错误403,它是托管问题
  • 首先,可以进行一些配置以具有子状态代码,如上所述

    第二,错误403.9表示打开的会话太多, 因此,我通过php函数检查了会话的位置:session\u save\u path(),看到很多文件都是以sess开头的,即文件是会话

    正如session.gc_maxlifetime声明的那样,会话将在一段定义明确的时间内过期

    在我的网站上,会话在1个半小时后过期

    所以,垃圾收集器应该删除会话文件——在我的站点上工作不好,所以我有很多会话文件——导致403错误

    我所做的只是删除了会话文件

    问题解决了

    谢谢:)

        xmlhttp.open("POST", "saveImage.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ...
            xmlhttp.send("&scale=" + scaleRatio +
                "&top=0" +
                "&left=0" + 
    // ...
                "&src=" + encodeURIComponent(s)); // **** src is the 300K string send to server.
    
    $imagebin = (urldecode)((string)$_POST['src']); // is decode necessary?
    
    $.ajax({
        url : "saveImage.php",
        type: "POST",
        dataType: "html",
        data: {
            'scale': 1
            'top': 0,
            'left': 0,
            'ext': picExt,
            'src': encodeURIComponent(s) /*********/
        },
        timeout: 30000
    }).success(function (result) {
        // code doesn't reach here
        s = result;
    }).fail(function (jqXHR, textStatus) {
        // ******* code doesn't reach here any more ******
        if (textStatus === "timeout") {
            // ****** code doesn't reach here
        } else {
            // ******* code doesn't reach here any more ******
        }
        // ******* code doesn't reach here any more ******
    });