2010-12-08 90 views
0

我想在內存中創建一個位圖,設置一些像素值,然後將該圖像保存到磁盤。可可渲染位圖到文件

到目前爲止,我有NSBitmapImageRep:

image = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL 
               pixelsWide:width 
              pixelsHigh:height 
              bitsPerSample:8 
              samplesPerPixel:4 
                hasAlpha:YES 
                isPlanar:NO 
              colorSpaceName:NSDeviceRGBColorSpace 
               bytesPerRow:0 
               bitsPerPixel:0]; 

然後,只需添加一些像素像這樣:

NSColor *color = [NSColor colorWithDeviceRed:1.0 
             green:1.0 
             blue:1.0 
             alpha:1.0]; 


[image setColor:color 
      atX:x 
       y:y]; 

而最終保存圖像(爲TIFF,這是不理想的,但一個好的開始)

NSData* TIFFData = [image TIFFRepresentation]; 
[TIFFData writeToFile:@"/temp/image.tiff" atomically:YES]; 

從此代碼保存的圖像實際上是空的,只顯示幾個左上角的像素。我不確定車輪在哪裏脫落,但似乎很明顯我以錯誤的方式出去了?

回答

0

我不知道究竟是什麼不對您的樣品,但我會處理這個問題是這樣的:

NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; 
[image lockFocus]; // All drawing commands until unlockFocus target this image. 
[[NSColor redColor] set]; 
NSRectFillUsingOperation(NSMakeRect(x, y, 1, 1), NSCompositeSourceOver); 
[image unlockFocus]; 
NSData *data = [image TIFFRepresentation]; 
[data writeToFile:@"/temp/image.tiff" atomically:YES]; 
[image release]; 
+0

我會試試這個。有沒有辦法在不使用填充操作的情況下打印單個像素?我確信這種方法會有開銷。 – Nippysaurus 2010-12-09 01:50:16