2011-06-30 34 views
8

Trong ứng dụng iOS, tôi cần cung cấp bộ lọc hình ảnh dựa trên kích thước của chúng (chiều rộng/chiều cao), tương tự như "Lớn, Vừa, Nhỏ" trong tìm kiếm hình ảnh của Google . Mở mỗi hình ảnh và đọc kích thước của nó khi tạo danh sách sẽ rất hiệu quả. Có cách nào để có được thông tin này mà không cần mở chính hình ảnh đó không?iOS: làm thế nào để có được kích thước hình ảnh mà không cần mở nó

Damien DeVille đã trả lời các câu hỏi dưới đây, căn cứ vào đề nghị của ông, bây giờ tôi đang sử dụng đoạn mã sau:

NSURL *imageURL = [NSURL fileURLWithPath:imagePath]; 
if (imageURL == nil) 
    return; 

CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)imageURL, NULL); 
if(imageSourceRef == NULL) 
    return; 

CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);  
CFRelease(imageSourceRef); 

NSLog(@"%@", (NSDictionary *)props); 

CFRelease(props); 
+0

phiếu giảm giá là gì? –

+0

không có ý tưởng, người đã trả lời câu hỏi ban đầu đã không hiểu câu hỏi ở tất cả và đã được xúc phạm, vì vậy tôi đã báo cáo anh ta để SO mods. có thể anh ta đã trả thù cho tôi ;-) –

Trả lời

9

Bạn có thể sử dụng ImageIO để đạt được điều đó.

Nếu bạn có URL hình ảnh của mình (hoặc từ đường dẫn tệp tạo URL bằng + fileURLWithPath trên NSURL), bạn có thể tạo nguồn hình ảnh bằng CGImageSourceCreateWithURL (bạn sẽ phải truyền URL tới CFURLRef).

Khi bạn có nguồn hình ảnh, bạn có thể nhận được một CFDictionaryRef thuộc tính của hình ảnh (bạn có thể một lần nữa cầu đúc sang NSDictionary) bằng cách gọi CGImageSourceCopyPropertiesAtIndex. Những gì bạn nhận được là một từ điển với nhiều thuộc tính về hình ảnh bao gồm pixelHeight và pixelWidth.

Bạn có thể chuyển 0 làm chỉ mục. Chỉ mục là do một số hình ảnh có thể có nhiều hình ảnh được nhúng khác nhau (chẳng hạn như hình thu nhỏ hoặc nhiều khung hình như trong hình gif).

Lưu ý rằng bằng cách sử dụng nguồn hình ảnh, hình ảnh đầy đủ sẽ không phải được tải vào bộ nhớ nhưng bạn vẫn có thể truy cập các thuộc tính của nó.

Làm cho bạn nhập và thêm khuôn khổ vào dự án của mình.

+3

cảm ơn, hoạt động tốt, tôi đã chỉnh sửa câu hỏi của tôi để bao gồm mã tôi đã sử dụng, chỉ trong trường hợp. –

0

Chỉ cần một bổ sung: nếu bạn muốn sử dụng web-url như http://www.example.com/image.jpg bạn nên sử dụng sau đó [NSURL URLWithString: ImagePath] thay vì [NSURL fileURLWithPath: ImagePath].

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