2010-08-23 11 views
6

Tôi đã xem xét ở khắp mọi nơi để không có kết quả. Tôi đang làm một số hình ảnh tải trong một chủ đề và kể từ UIKit không phải là chủ đề an toàn Tôi sẽ phải lưu trữ những hình ảnh như CGImageRefs nhưng tôi không thể tìm ra cách để làm điều này. Tôi đã không chơi với bất kỳ công cụ thạch anh trước đây vì vậy nó gây nhầm lẫn cho tôi. Về cơ bản tôi chỉ cần tải một JPG từ đĩa vào một CGImageRef. Ngoài ra cho điểm thưởng, có anyway để tải một GIF vào một CGImageRef?Cách chính xác để tạo một CGImageRef từ một hình ảnh trên đĩa

Trả lời

28

gcamp là nhiều hay ít chính xác, bạn là khá an toàn để sử dụng này trên một sợi nền, nhưng để trả lời câu hỏi của bạn, tôi tin rằng sau đây sẽ làm việc.

CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename("file"); 
CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, NO, kCGRenderingIntentDefault); 

Ngoài ra còn có một chức năng cho hình ảnh jpg, CGImageCreateWithJPEGDataProvider.

(đảm bảo phát hành nhà cung cấp dữ liệu và hình ảnh khi hoàn thành)

8

Tôi nghĩ cách đơn giản nhất là sử dụng UIKit và sử dụng số CGImage của UIImage.

Something như thế:

UIImage* image = [UIImage imageNamed:@"Your Image.png"]; 
CGImageRef imageRef = image.CGImage; 
+1

Được rồi, nhưng vấn đề đang xảy ra trong chuỗi và UIKit không phải là chủ đề an toàn. Nếu không tôi sẽ chỉ gửi lại UIImage. Tôi cần để có thể đọc một hình ảnh từ một tập tin và trực tiếp tạo ra một CGImageRef cho nó – Alexander

+0

Thật không may là O.P. là đúng, mà Apple nói "Tất cả các đối tượng UIKit nên được sử dụng trên chủ đề chính chỉ." –

+0

Nếu tôi không nhầm, cập nhật giao diện người dùng phải được thực hiện trên chuỗi chính. Các phần khác của UIKit thực sự là an toàn. – gcamp