2012-02-19 10 views
6

何が原因かわかりませんが、FileTransfer()でリモートサーバに画像をアップロードすると画像が横向きまたは逆さまに表示されることがあります。しかし、私はiPhone上でローカルに画像を見ると、それらは正しい方法で配置されます。例えばPhoneGap(iOS)経由で画像をアップロードしたときに画像が横方向/上下が逆転する

、私がアップロードし、このように画像を選択:

それは次のように判明します:私は、ファイルを転送するためにローカルパスを使用していますので、私がいないhttp://sharefa.st/view/EWdW1Z4G8r8z

画像が「ランダムに」回転する理由を理解する。

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値は次のようになります:任意の洞察力が高く評価され

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

は、ここに私のアップロード機能です。

+1

はまた、私はすぐにそれを掘り下げるよ、iOSの上で同じ問題を抱えています。 –

答えて

15

ヒューマノイド主義のおかげで、この問題は実際にiPhoneで起こっていたことと、画像が保存されている方法を指摘したので、私は解決策を見つけ出すことができました。

写真を正しい向きでアップロードするには、getPicture()のオプション配列にcorrectOrientationの設定を追加し、trueに設定する必要があります。ここで

2つの例です:

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

私はcordova 3.5.0を使用しています。私は 'correctOrientation'を' true'に設定しましたが、イメージはフロントカメラでアンドロイド:( – Vishnu

1

問題はPhoneGapではなくiPhoneです。 iPhoneはワイドレンズカメラとして使用するように設計されています。写真を撮ったり、ビデオを撮影したりするときは、携帯電話を横向きに回転させてデスクトップに表示します。あなたの携帯電話は、あなたがそれらをどのように取ったかを「知っている」が、あなたが見ているコンピュータが正しく表示されないため、正しく表示されます。

これを防ぐには、アップロード前に画像を回転させることができます。これは推奨された修正ではありませんが、少なくともデスクトップコンピュータのユーザーはそれを見ることができます。 iPhoneで見ると回転しますが、画像を回転させたり回転させない携帯デバイスのチェックが便利ですが、推奨されません。

関連する問題