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深度的解决方案比我认为的更难。所以对此的帮助也会很棒。
没有找到相关结果
已邀请:
2 个回复
咖哀烈
你必须输入已经base64解码的字符串。 我认为你的路线
应该是“如果有一个字符代码> 127,将这个和下一个字符代码加在一起并将其用作单个字符”我认为这种方法确实是你想要的(我们不知道因为我们不知道不知道你的数据。
豆兢