私は実行中の問題をexplaneする前に、私のユースケースで頑張ります。PHP修正イメージのバイト数
私はphonegapフレームワークを使用してモバイルアプリケーションを構築しています。
このアプリケーションでは、ファイル(カメラで作った画像)をアップロードする必要があります。
ほとんどのプラットフォームでは、このイメージをbase64でエンコードされたイメージとして戻すことができます。
私はこれをサーバーに送り返すことができ、それをデコードして保存することができます。 (QRコードのように他の面白いこともしています)。
今、シンビアンでは、私はbase64文字列を返すことができず、私はイメージにURIを取得することしかできません。 xmlhttprequestを使ってイメージデータを取得し、javascriptを使ってbase64にエンコードすることができるので、これは問題ではありません。
この方法は機能しますが、問題が発生します。
Symbianブラウザにバグがあるようです。それは2005年からのWebkitベースのブラウザです(はい、これは古いもので、最新のs60携帯電話でも)。
バグは、(utf-8テーブルではなく)知らないすべての文字を2バイトに変換することです。もし正しく覚えていれば、それは127以上のすべてだった。
私はjavascriptを使ってこのバグを修正しようとしましたが、キャンバスとしてサポートされていないため、btw、canvas、getBinariesなどはサポートされていませんでしたブラウザによって)。
私は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;
}
}
}
}
}
この関数は、何らかの理由で機能していません。 は、私は次の警告を得る:
Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format in /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php on line 98
を、私は得る:
Fatal error: Maximum function nesting level of '100' reached, aborting! in /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php on line 87
この最後の1はそれが非常に簡単解決するために、私は思いますが、私はi'deはとにかくそれを投稿だと思います。
今、私の質問は次のとおりです。
正しいトラックにいますか?
警告を解決するにはどうすればよいですか?事前に
どうもありがとう、
エリック
P.S.私の英語が悪い場合は申し訳ありません。私はネイティブスピーカーではなく、私はオランダ人です。 http://markmail.org/message/iosbn3rbcgu5k6qt
EDIT: 100の深さの最大のためのソリューションは、私はそれがあるだろうと思っ困難だった
p.s.2は私が話していたバグがこれです。それで助けても素晴らしいでしょう。
元のバイトシーケンスと変更されたバイトシーケンスはどのように見えますか? –
あなたに正しいバイトを与える方法は本当に分かりませんが、私はあなたにbase64を与えることができます: http://www.erikmaas.com/test/bins.html – Erik
Webkit 2005?おそらくバグがあります。 Webkitブラウザをアップグレードしてみてください... – alexy13