2009-06-14 28 views

Trả lời

2

Vâng, một CGImage không phải là một CALayer, vì vậy rõ ràng là bạn đang để lại một số bước ra khỏi đó, nhưng tôi giả sử bạn biết những gì bạn đang nói đến, như xa như sắp kết CALayer hay có điều gì.

Nếu câu hỏi của bạn là về việc tạo CGImage s mà không sử dụng một UIImage, bạn có thể thử nhìn vào các chức năng sau:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

Nếu bạn tình cờ biết trước những gì loại hình ảnh đó, chỉ cần sử dụng phương pháp thích hợp. Nếu không, bạn cần phải nhìn vào chữ ký tập tin để xem nó có chứa PNG hay JFIF hay không. Tất nhiên, điều này yêu cầu bạn triển khai CGDataProvider.

Tôi cho rằng đây chính là điều mà lớp UIImage đang thực hiện. Nếu bạn muốn ép ra mỗi bit hiệu quả từ đó, bạn có thể sử dụng một trong những phương pháp sau đây trong lớp UIImage:

+ (UIImage *)imageWithContentsOfFile:(NSString *)path 
+ (UIImage *)imageWithData:(NSData *)data 

Sự khác biệt duy nhất giữa những phương pháp và

+ (UIImage *)imageNamed:(NSString *)name 

imageNamed: lưu trữ hình ảnh. Nếu bạn sử dụng một trong những phương pháp đầu tiên, nó không.

+0

Cảm ơn vì điều đó. CGImageCreateWithJPEGDataProvider và CGImageCreateWithPNGDataProvider chính xác là những gì tôi đang tìm kiếm. –

17

Hãy thử điều này:

layer.contents = (__bridge id)[ uiimage CGImage ] ; 

HTH

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