2012-02-01 20 views
24

Tôi đang thử xử lý một hình ảnh trong CoreGraphics và sau đó trả lại hình ảnh đã xử lý trở lại NSImage để lưu và hiển thị. Tôi có nhiều tài nguyên về cách thực hiện các chức năng này trong iOS nhưng các phương thức trợ giúp dường như bị thiếu trong NSImage. Trong iOS, phương thức lớp là imageWithCGImage:, bạn có thể làm điều này như thế nào trong Mac OS?Nhận NSImage từ CGImageRef

Trả lời

42

Phương thức đối sánh trong NSImage là initWithCGImage:size:.

Đối số thứ hai có kích thước của hình ảnh theo điểm. Yếu tố giữa kích thước tính bằng pixel (của CGImage) và kích thước theo điểm là hệ số tỷ lệ. Vì vậy, ví dụ, nếu bạn có một CGImage 100 × 100px, và vượt qua một kích thước của (NSSize){ 50.0, 50.0 }, hình ảnh sẽ có kích thước 50 điểm và độ phân giải gấp đôi.

Thông thường, bạn chỉ cần chuyển kích thước bằng pixel (từ CGImage) làm kích thước theo điểm. Để xử lý nhiều yếu tố tỷ lệ, tốt hơn nên sử dụng một NSImage đơn với nhiều NSImageRep, giống như những gì bạn nhận được từ -[NSWorkspace iconForFileType:] cho hầu hết các loại hoặc từ việc tạo một NSImage từ một tệp .icns điển hình.

+41

NSZeroSize là viết tắt của "cùng kích thước với CGImage". – Ken

+0

@Ken Cảm ơn Ken là thông tin chính! –

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