2012-02-19 12 views
6

No estoy seguro de lo que podría estar causando esto, pero cuando subo algunas imágenes a mi servidor remoto a través del FileTransfer(), las imágenes a veces aparecen hacia los lados o hacia abajo. Sin embargo, cuando veo las imágenes localmente en el iPhone, se colocan de la manera correcta.Imágenes girando hacia los lados/boca abajo después de cargarse a través de PhoneGap (iOS)

Por ejemplo, al seleccionar una imagen como esta para subir:

va a salir de esta manera: http://sharefa.st/view/EWdW1Z4G8r8z

estoy usando la ruta local para transferir el archivo, por lo que no hacer entender por qué la imagen rotaría "aleatoriamente".

Aquí es mi función de carga:

function uploadPhoto() { 

    var options = new FileUploadOptions(); 
    options.fileKey = 'file'; 
    options.fileName = imgURI.substr(imgURI.lastIndexOf('/')+1); 
    options.mimeType = 'image/jpeg'; 

    var params = new Object(); 

    if(logged_in == true) { 

     params.unique_id = app_unique_id; 
     params.secret_key = user_secret_key; 

    } 

    options.params = params; 

    loadingStart(); 

    var ft = new FileTransfer(); 

    ft.upload(imgURI, 'http://' + remote_server + '/API/upload', uploadDetails, fail, options); 

} 

imgURI valor es el siguiente:

file://localhost/var/mobile/Applications/<snip>/tmp/photo_015.jpg 

se aprecia Cualquier penetración.

+1

también tengo el mismo problema en IOS, voy a cavar en ella pronto. –

Respuesta

15

Gracias al humanoide señalando que el problema era en realidad con el iPhone, y la forma en que almacenaba las imágenes, pude descubrir una solución.

Para cargar fotos en la orientación correcta, debe agregar la configuración correctOrientation a la matriz de opciones en getPicture(), y configurarlo en true.

He aquí dos ejemplos:

function capturePhoto() { 

    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 30, correctOrientation: true }); 

} 

function getPhoto(source) { 

    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 30, 
    destinationType: destinationType.FILE_URI, 
    sourceType: source, 
    correctOrientation: true }); 

} 
+0

Estoy usando cordova 3.5.0 y he configurado 'correctOrientation' en 'true' pero la imagen se ha volteado con la cámara frontal en Android :( – Vishnu

1

El problema no es PhoneGap sino iPhone. El iPhone fue diseñado para ser utilizado como una cámara de lente ancha. Gire el teléfono hacia los lados para tomar fotos o capturar videos si tiene la intención de verlos en el escritorio. Su teléfono los mostrará correctamente, ya que "sabe" cómo los tomó, pero la computadora que está viendo en dosen't.

Lo que podría hacer para evitar esto es rotar la imagen antes de la carga. Esta no es una solución recomendada, pero al menos las personas en las computadoras de escritorio podrán verla. Sin embargo, al verlos en el iPhone, se rotarán, tal vez un control para los dispositivos móviles, ya sea que la rotación de la imagen sea o no, podría ser útil, pero una vez más, no se recomienda.

Cuestiones relacionadas