PHP修复图像字节

在我解释我遇到的问题之前,我将要讨论我的用例。 我正在使用phonegap框架构建移动应用程序。 对于这个应用程序,我需要上传一个文件(用相机拍摄的图片)。 在大多数平台上,我可以将此图像作为base64编码图像返回。 我可以将它发送回服务器,它可以解码并保存。 (并做一些其他的有趣的东西,因为它是一个二维码)。 现在在symbian上,我无法取回base64字符串,我只能获取图像的URI。 这不是问题,因为我可以使用xmlhttprequest获取图像数据并使用javascript将其编码为base64。 这种方法有效,但它给我一个问题。 symbian浏览器似乎有一个错误。它是2005年基于webkit的浏览器(是的,即使在最新的s60手机上也是如此)。 错误是它将所有不知道的字符(不在utf-8表中)转换为2个字节。如果记得正确那就是127以上的一切。 我试图使用javascript修复此错误,但它是一个没有去(顺便说一句,画布然后getBinaries或类似的东西不支持,因为浏览器不支持画布2d)。 所以,我尝试在PHP中构建一个解决方法来修复字节。 这就是我现在所拥有的,虽然它不起作用:
function getValidBin($bin, $offset = 0) {
    $binLength = sizeof($bin);
    for ($i = $offset; $i<=$binLength; $i++) {
        if ($i == $binLength) {
            return false;
        }
        if ($bin[$i] < 127) {

            $binT = $bin[$i] + $bin[$i+1];
            $bin2 = $bin;
            $bin2[$i] = $binT;
            $bin2[$i+1] = null;
            if (imagecreatefromstring($bin2) != false) {
                return $bin2;
            } else {
                $bin3 = getValidBin($bin2, $i);

                if ($bin3 != false) {
                    return $bin3;
                }
            }
        }
    }
}
此功能由于某种原因不起作用。 我收到以下警告:   警告:imagecreatefromstring()[function.imagecreatefromstring]:第98行的/opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php中的数据不是可识别的格式 我得到:   致命错误:达到最大功能嵌套级别'100',正在中止!在第87行的/opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php中 我认为,这最后一个很容易解决,但我认为无论如何我都会发布它。 现在,我的问题是: 我在正确的轨道上吗? 我该如何解决警告? 非常感谢提前, 埃里克 附:抱歉,如果我的英语不好。我不是母语人士,因为我是荷兰人。 p.s.2我所谈论的错误就是这个:http://markmail.org/message/iosbn3rbcgu5k6qt 编辑: 最大100深度的解决方案比我认为的更难。所以对此的帮助也会很棒。     
已邀请:
为什么要在每个字节后创建图像?什么是递归?难道你不能只是遍历字符串并修复那些双字节?像这样的东西:
function getValidBin($s) {
    $new_s = '';
    for ($i = 0; $i < strlen($bin) ; $i++)
    {
        $char = $s{$i};
        if (ord($char) > 127)
        {
            $char = chr(ord($char) + ord($s{$i}));
            $i++;
        }
        $new_s .= $char;
    }
}
你必须输入已经base64解码的字符串。 我认为你的路线
$binT = $bin[$i] + $bin[$i+1];
应该是“如果有一个字符代码> 127,将这个和下一个字符代码加在一起并将其用作单个字符”我认为这种方法确实是你想要的(我们不知道因为我们不知道不知道你的数据。     
这个问题没有解决办法。 我切换到应用程序的javascript端来修复那里的字节。     

要回复问题请先登录注册