Pregunta


Voy a strart con mi caso de uso, antes de que yo explane El problema que estoy corriendo en a.

Estoy construyendo una aplicación móvil usando el marco PhoneGap.
Para esta aplicación i necesidad de cargar un archivo (un cuadro hecho con una cámara).
En la mayoría de las plataformas puedo conseguir esta imagen De nuevo como una imagen codificada en base64.
Puedo enviar esta vuelta al servidor, y puede decodificar y guardarlo. (Y hacer algunas otras cosas funcy ya que es un código QR).

Ahora en Symbian, no puedo volver a la cadena de base 64, y sólo puedo obtener la URI de la imagen. Este no es un problema, becouse puedo utilizar un xmlhttprequest para obtener los datos de imagen y codificar a base 64 usando Javascript.

Este Methode obras, pero me da un problema.
El navegador de Symbian parece tener un error. Es un navegador basado en WebKit de 2005 (sí, es tan viejo, incluso en los más nuevos teléfonos S60).
El error es que convierte todos los caracteres que no sabe (no en una mesa de UTF-8) a 2 bytes. Si se recuerdan bien, fue todo por encima de 127.

Me han tratado de corregir este error usando javascript, pero fue un no ir (por cierto, lienzo y luego getBinaries o algo así como que no se admiten como 2d tela no está soportado por el navegador).

Por lo tanto, trato de construir una solución en php para fijar los bytes. Esto es lo que tengo en este momento, a pesar de que no está funcionando:

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;
                }
            }
        }
    }
}

Esta función no funciona por alguna razón. Consigo las advertencias siguientes:

  

Advertencia: imagecreatefromstring () [function.imagecreatefromstring]: Datos no está en un formato reconocido en /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php en la línea 98

Y me sale:

  

Fatal error: nivel de anidamiento máximo de la función '100' alcanzado, abortando! en /opt/content/erik/omnicol/HTML/WS/services/qrDecoder/QrDecoder.php en la línea 87

Este último es bastante fácil de resolver, creo, pero creo que I'de puesto que una de todos modos.

Ahora, mi pregunta es:
¿Estoy en el camino correcto?
¿Cómo resuelvo la advertencia?

Muchas gracias de antemano, España Erik

p.s. lo siento si mi Inglés es malo. No soy un hablante nativo, ya que soy holandés.
PS2 El error que estaba hablando es la siguiente: http://markmail.org/message/iosbn3rbcgu5k6qt

EDIT: La solución para el max de 100 profundidad era más difícil entonces pensé que sería. Por lo tanto ayuda en ese sería grande también.

¿Fue útil?

Solución 2

No había ninguna solución para este problema.
I conmuta al lado javascript de la solicitud para fijar los bytes allí.

Otros consejos

¿Por qué estás tratando de crear la imagen después de cada byte? Y lo que es que la recursividad para? ¿No puedes correr sobre la cuerda y solucionar esos dobles-bytes? Algo como esto:

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;
    }
}

Usted tiene que poner en la cadena ya base 64-decodificado.

Me supone que su línea

$binT = $bin[$i] + $bin[$i+1];

Se supone que significa "si hay un código de caracteres> 127, añadir este y el siguiente código de caracteres juntos y utilizarlo como un solo carácter" y que supone que este enfoque es realmente lo que quiere (no podemos saber ya que no conocemos sus datos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top