Я собираюсь разобраться с моим вариантом использования, прежде чем объясню проблему, с которой я работаю.
Я создаю мобильное приложение, используя каркас телефонной связи.
Для этого приложения мне нужно загрузить файл (изображение, сделанное с помощью камеры).
На большинстве платформ я могу вернуть это изображение как изображение в кодировке base64.
Я могу отправить его обратно на сервер, иэто может расшифровать это и сохранить это.(и делать другие забавные вещи, так как это QR-код).
Теперь в symbian, я не могу вернуть строку base64, и я могу получить только URI к изображению.Это не проблема, потому что я могу использовать xmlhttprequest для получения данных изображения и кодировать их в base64 с помощью javascript.
Этот метод работает, но он вызывает у меня проблему.
Появляется браузер symbianиметь ошибку.Это браузер, основанный на webkit с 2005 года (да, он старый даже на новейших телефонах s60).
Ошибка в том, что он преобразует все незнакомые символы (не в таблице utf-8) в 2байт.Если вы правильно помните, все было выше 127.
Я пытался исправить эту ошибку, используя javascript, но это не помогло (кстати, canvas, затем getBinaries или что-то подобное не поддерживаются, так как canvas 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]: данные не находятся в распознанном формате в / opt / content / erik / omnicol / HTML / WS / services / qrDecoder/QrDecoder.php в строке 98
И я получаю:
Неустранимая ошибка: достигнут максимальный уровень вложенности функции '100', прерывание!в /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php в строке 87
Этот последний вопрос довольно легко решить, я думаю, но я думаю, чтоВ любом случае, отправьте сообщение.
Теперь мой вопрос:
Я на правильном пути?
Как мне решить предупреждение?
Спасибо большое зазаранее,
Эрик
ps извините, если мой английский плох.Я не являюсь носителем языка, так как я голландец.
ps2 Ошибка, о которой я говорил, заключается в следующем: http://markmail.org/message/iosbn3rbcgu5k6qt
РЕДАКТИРОВАТЬ: Решение для максимальной глубины 100 было сложнее, чемЯ думал, что это будет.Так что помощь в этом тоже была бы отличной.