我需要從NSImage獲取CGIImageRef。在Cocoa for Mac OS X中有一種簡單的方法嗎?在Mac OS X上從可可中的NSImage獲取CGIImageRef
4
A
回答
5
如果你需要瞄準的Mac OS X 10.5或任何其他以前的版本,使用下面的代碼片段來代替。如果你不這樣做,NSD的答案是正確的選擇。
CGImageRef CGImageCreateWithNSImage(NSImage *image) {
NSSize imageSize = [image size];
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, imageSize.width, imageSize.height, 8, 0, [[NSColorSpace genericRGBColorSpace] CGColorSpace], kCGBitmapByteOrder32Host|kCGImageAlphaPremultipliedFirst);
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:bitmapContext flipped:NO]];
[image drawInRect:NSMakeRect(0, 0, imageSize.width, imageSize.height) fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
[NSGraphicsContext restoreGraphicsState];
CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext);
CGContextRelease(bitmapContext);
return cgImage;
}
如果你的圖片來自於一個文件,你可以使用image source直接加載數據到一個CGImageRef會更好。
15
+4
FWIW,這隻適用於Mac OS X 10.6或更高版本。 – 2009-11-11 14:51:30
+0
非常感謝你本 – Mike2012 2009-11-11 19:37:49
相關問題
- 1. 從CoreData檢索NSImage - Mac OS X
- 2. NSWindowFlipper在可可的Mac OS X
- 3. 在Mac OS X中獲取AWT框架的可繪製區域?
- 4. 獲取ANDROID_LINT_COMPLETE_REGIONS在Mac OS X上運行
- 5. 獲取Mac OS X上的eclipse版本
- 6. 從CGImageRef獲取NSImage
- 7. MAC OS X可可應用程序
- 8. 如何在Mac OS X上使用可可更改卷名稱
- 9. 獲取SublimeText從終端在Mac OS X上運行
- 10. Mac OS X上的SimpleFTPUpload X
- 11. 在Mac OS X上的Python
- 12. 在Mac OS X,Windows上獲取Python中的root對話框?
- 13. Mac OS X上的可可Websocket服務器
- 14. Mac OS X上的可可應用程序體系結構
- 15. 從C獲取Mac OS X上的CPU數量?
- 16. 如何從Mac OS X上的用戶名獲取帳戶ID?
- 17. Mac OS X版本的Texture2D.m,.h可用?
- 18. 獲取MAC OS X的機器ID
- 19. 在Mac OS X Mavericks上ErlIDE
- 20. date_calc在Mac OS X上
- 21. 在OS X上打開NSImage時從EXIF中讀取相機數據
- 22. 如何在Mac OS X上從CCID卡中讀取java程序?
- 23. 在Mac OS X
- 24. 在Mac OS X
- 25. 在Mac OS X
- 26. 獲取在Mac OS X 10.5上登錄的用戶名稱
- 27. 在Mac OS上獲取視頻的.asf聲音X
- 28. NSURL訪問可可中的網絡共享文件 - Mac OS X
- 29. 當在Mac OS X上更改$ IFS在bash上時,Mac OS X上
- 30. 我在哪裏可以獲得Mac OS X舊SDK?
我做了類似於這個的使用來自bitmapContext的數據。一個重要的問題:如果你想使用上下文中的數據,你需要在NSGraphicsContext上調用flushGraphics。沒有它,它在調試模式下工作正常,但在發佈模式下分段。 – Sam 2013-09-12 11:49:40