2012-02-19 22 views
6

Không chắc chắn điều gì sẽ gây ra điều này, nhưng khi tôi tải một số hình ảnh lên máy chủ từ xa của mình qua FileTransfer(), hình ảnh đôi khi hiển thị theo chiều ngang hoặc lộn ngược. Tuy nhiên, khi tôi xem hình ảnh cục bộ trên iPhone, chúng được định vị đúng cách.Hình ảnh bị lệch sang một bên sau khi được tải lên qua PhoneGap (iOS)

Ví dụ, khi tôi chọn một hình ảnh như thế này để tải lên:

Nó sẽ lần lượt ra như thế này: http://sharefa.st/view/EWdW1Z4G8r8z

Tôi đang sử dụng đường dẫn nội bộ để chuyển các tập tin, vì vậy tôi không hiểu lý do tại sao hình ảnh sẽ xoay "ngẫu nhiên".

Đây là chức năng tải lên của tôi:

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 giá trị trông như thế này:

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

Bất kỳ cái nhìn sâu sắc được đánh giá cao.

+1

Tôi cũng có cùng một vấn đề trên iOS, tôi sẽ thâm nhập vào nó sớm. –

Trả lời

15

Nhờ tính nhân đạo, chỉ ra rằng vấn đề là trên thực tế với iPhone, và cách nó lưu trữ hình ảnh, tôi đã có thể tìm ra một giải pháp.

Để tải ảnh lên theo đúng hướng, bạn phải thêm thiết lập correctOrientation vào mảng tùy chọn trong getPicture() và đặt thành true.

Dưới đây là hai ví dụ:

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

Tôi đang sử dụng cordova 3.5.0 và tôi đã đặt 'correctOrientation' thành 'true' nhưng hình ảnh được lật với camera phía trước trên android :( – Vishnu

1

Sự cố không phải là PhoneGap mà là iPhone. IPhone được thiết kế để sử dụng như một chiếc máy ảnh ống kính rộng. Xoay điện thoại sang một bên khi chụp ảnh hoặc quay video nếu bạn định xem chúng trên máy tính để bàn. Điện thoại của bạn sẽ hiển thị chúng một cách chính xác, bởi vì nó "biết" cách bạn lấy chúng, nhưng máy tính mà bạn đang xem nó trên không.

Điều bạn có thể làm để ngăn điều này là xoay ảnh trước khi tải lên. Đây không phải là bản sửa lỗi được đề xuất nhưng ít nhất mọi người trên máy tính để bàn sẽ có thể xem nó. Mặc dù khi xem chúng trên iPhone, chúng sẽ được xoay vòng - có thể là một kiểm tra cho các thiết bị di động thời tiết hoặc không xoay hình ảnh có thể có ích - nhưng vẫn không được khuyến khích.

Các vấn đề liên quan