你好聰明的程序員,如何在c#中將大圖直接寫入bmp文件(不在內存中創建位圖對象)?
我需要將小圖像合併成一個大的圖像,其尺寸大約爲7600 x 7600像素。當我在內存中創建它時,會花費太多我無法承受的內存。
我認爲這樣做的好方法是讓緩衝區(對於我想放在大圖片中的每個小圖片)直接寫入文件(激昂的blob - 在天藍色)。有人知道如何做到這一點(任何免費的圖書館?)我搜索谷歌,但沒有答案(也許錯的問題 - 我的英語很差)。
你好聰明的程序員,如何在c#中將大圖直接寫入bmp文件(不在內存中創建位圖對象)?
我需要將小圖像合併成一個大的圖像,其尺寸大約爲7600 x 7600像素。當我在內存中創建它時,會花費太多我無法承受的內存。
我認爲這樣做的好方法是讓緩衝區(對於我想放在大圖片中的每個小圖片)直接寫入文件(激昂的blob - 在天藍色)。有人知道如何做到這一點(任何免費的圖書館?)我搜索谷歌,但沒有答案(也許錯的問題 - 我的英語很差)。
如果您正在討論「bmp」文件,您可以通過以位圖文件格式直接將數據寫入文件流來完成此操作。這很簡單,實際上「bmp」是最簡單的圖像格式,所以我懷疑你會遇到任何困難。這裏有兩個解釋詳細的位圖文件格式有用的文章:
我不知道任何圖像庫,將做編碼成BMP格式的飛行,所以我的恐怕你必須實現自己的。 幸運的是,在不使用壓縮的情況下,BMP格式非常簡單,而使用RLE壓縮並不是很困難。它基本上是一個標題,後面是一行一行的圖像像素的原始字節。
這意味着你將不得不加載所有圖像在一行(如果你的目標圖像是30乘40圖像,你需要加載30.)除非你的輸入圖像也是BMP格式你不介意創建一個自定義閱讀器。
您可以通過鍵入谷歌「BMP格式」獲得BMP格式的文件(維基百科有它。)
嗯好了,但最後(對不起,我沒有寫在問題)我想有JPG,即使我創建BMP飛 - 我需要算法,它轉換「飛」(沒有讀大BMP數據到內存) .. –
這完全取決於你想要創建的圖像格式。 – Rotem