2009-12-09 57 views
3

我想知道如何從C中導入和導出位圖。我基本上從哪裏開始失去了。如何創建位圖(C語言)?

+0

從頭創建位圖或通過庫創建位圖? – Brian

+0

您應該瞭解BITMAP文件的結構。然後創建一個位圖並不困難 它就像填充文件頭後播放位一樣。 –

回答

2

在內存中的位圖看起來與此類似:

struct Image { 
    int width; 
    int height; 
    char *data; // 1 byte per channel & only 1 channel == grayscale 
} 

struct Image theImage; 
theImage.width = 100; 
theImage.height = 100; 
theImage.data = malloc(sizeof(char) * theImage.width * theImage.height); 

至於進口和出口,也有一些非常簡單的文件格式在那裏,看一看BMP。對於更復雜的格式,最好使用已有的庫。

大多數框架已經有最常用的文件格式的加載/保存方法。如果你正在尋找一個輕量級庫,你可以看看SDL

0

術語「位圖」有點通用,除非您特別指Windows BMP

我建議在您的平臺上使用圖像處理庫(如gd)。一個好的圖形庫具有用各種格式輸入和輸出圖像的例程。

2

你看過ImageMagick的C API封裝器MagickWand嗎? Here's該文件,如果你想仔細閱讀。

1

我喜歡用虛擬驅動程序使用SDL。您可以像在屏幕上一樣繪製內存緩衝區,然後將其保存到PNG或任何與SDL_image或類似的東西。

另一個流行的圖書館是GD

1

簡單的答案是使用適當的庫。適合什麼樣的庫取決於你使用的平臺。在GUI平臺上,GUI API /框架將包括這些設施。

0

FreeImage非常好。我用它來進行我自己的遊戲開發工作,它支持大量的格式。下面是支持的功能和格式列表 - http://freeimage.sourceforge.net/features.html

+0

我看了一下100頁的API手冊, 'm不知道這是誰開始有困難的人的來源... –

0

我喜歡netpbm/pbmplus工具,雖然我通常喜歡命令行;該API是有效的,但使用起來並不好玩。

這個學期我寫了大量的軟件,讓初學者用來操作圖像;你可能想看看塔夫茨課程Machine Structure and Assembly-Language Programming的家庭作業和配套軟件。

+0

用戶名+密碼需要最後一個鏈接? –