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?
Trả lời
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");
}
Đ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
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 ...");
}
}
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