2011-02-03 10 views
8

Tôi tải ảnh từ thư viện iPhone/iPad, hầu hết trong số đó ở chế độ Chân dung, tôi muốn biết Làm cách nào để kiểm tra ảnh ở chế độ ngang hoặc dọc?Làm cách nào để biết ảnh ở chế độ ngang hoặc dọc?

+0

làm bạn muốn biết định hướng của thiết bị hoặc của bức ảnh? Bạn có thể nhận định hướng thiết bị hiện tại với câu trả lời của Viren. Mặt khác, so sánh chiều cao và chiều rộng của ảnh có tỷ lệ khung hình của nó. Nhưng sẽ không có cách nào để biết định hướng thực sự. – jakev

Trả lời

12

Sử dụng thuộc tính imageOrientation của UIImage trường hợp. Nó sẽ trả lại cho bạn một trong các hằng số these.

Ví dụ:

UIImage * image = // nạp từ thư viện

if (image.imageOrientation == UIImageOrientationUp) { 
    NSLog(@"portrait"); 
} else if (image.imageOrientation == UIImageOrientationLeft || image.imageOrientation == UIImageOrientationRight) { 
    NSLog(@"landscape"); 
} 
+2

Điều này đã giúp tôi bắt đầu với lựa chọn album và tôi muốn thêm một số thông tin bổ sung để chụp ảnh, điều mà tôi không nhận ra là 2 điều hoàn toàn khác! Khi người dùng chụp ảnh bằng camera của iPhone, hình ảnh không thẳng đứng nhưng trên thực tế xoay 90 độ ngược chiều kim đồng hồ. Vì vậy, nếu bạn muốn kết thúc trong khối 'if' cho' NSLog (@ "portrait"); 'thì bạn sẽ kiểm tra' UIImageOrientationLeft || UIImageOrientationRight || UIImageOrientationLeftMirrored || UIImageOrientationRightMirrored' và phần còn lại sẽ là 'landscape' – pulkitsinghal

1

Tôi đã thử nghiệm đoạn mã này trên hàng chục hình ảnh thực tế trên iPhone 4 chạy iOS 5.0 đã có thể thành công làm cho họ tất cả trong chế độ dọc. Đây là cách bạn sửa chữa/kiểm tra

if (image.imageOrientation == UIImageOrientationUp || 
     image.imageOrientation == UIImageOrientationDown) 
    { 
     NSLog(@"Image is in Landscape Fix it to portrait ...."); 

     backgroundView.frame = self.view.bounds; 
     backgroundView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 
     backgroundView.contentMode = UIViewContentModeScaleAspectFill; 
    } 
    else 
    { 
     NSLog(@"Image is in Portrait everything is fine ..."); 
    } 

Dưới đây là một kẻ ngốc cách chứng minh làm việc kiểm tra này

-(void)imagePickerController:(UIImagePickerController *)picker 
     didFinishPickingImage : (UIImage *)image 
       editingInfo:(NSDictionary *)editingInfo 
{ 

    // Get the data for the image 
    NSData* imageData = UIImageJPEGRepresentation(image, 1.0); 




    if ([UIImage imageWithData:imageData].size.width > [UIImage imageWithData:imageData].size.height) 
    { 
     NSLog(@"Select Image is in Landscape Mode ...."); 

    } 
    else 
    { 
     NSLog(@"Select Image is in Portrait Mode ..."); 

    } 
}