2012-02-01 15 views
24

Próbuję przetworzyć obraz w CoreGraphics, a następnie przywrócić przetworzony obraz z powrotem do NSImage w celu zapisania i wyświetlenia. Mam dużo informacji o tym, jak wykonywać te funkcje w systemie iOS, ale brakuje metod pomocniczych w NSImage. W iOS metoda klasy to imageWithCGImage:, jak możesz to zrobić w Mac OS?Uzyskiwanie NSImage z CGImageRef

Odpowiedz

42

Metoda dopasowania w NSImage to initWithCGImage:size:.

Drugi argument przyjmuje rozmiar obrazu w punktach. Współczynnik między wielkością w pikselach (obrazu CG) i wielkością w punktach jest współczynnikiem skali. Tak więc, na przykład, jeśli masz CGImage 100 x 100 pikseli i przekazujesz rozmiar (NSSize){ 50.0, 50.0 }, obraz będzie miał 50 punktów i podwójną rozdzielczość.

Zwykle należy po prostu przekazać rozmiar w pikselach (z CGImage) jako rozmiar w punktach. W przypadku obsługi wielu czynników skalujących, lepiej jest użyć pojedynczego NSImage z wieloma NSImageReps, jak to, co otrzymujesz z -[NSWorkspace iconForFileType:] dla większości typów lub z tworzenia NSImage z typowego pliku .icns.

+41

NSZeroSize jest skrótem dla "tego samego rozmiaru co CGImage". – Ken

+0

@ Ken Dziękuję Kenowi, to kluczowe informacje! –