2012-02-04 45 views
2

我想知道是否有任何好的教程或關於加載,創建和編輯C++位圖的書。我需要逐個像素地編輯位圖,但沒有一個教程沒有顯示如何。我想了解位圖「工作」和維基百科有何幫助。在C++中編輯位圖

+0

太寬泛的一個問題 – BitBank 2012-02-04 20:28:32

+0

你看過[「使用C++讀取和寫入BMP文件的最簡單方法」] [1]嗎? [1]:http://stackoverflow.com/q/199403/6294 – Maggie 2012-02-04 20:31:29

+0

@ user1183602: 「位圖」 可以是模糊的術語。你在談論以「.bmp」結尾的文件嗎?或只是在內存中的圖像?或者是其他東西? – 2012-02-04 20:35:44

回答

3

如果你想操縱像素級別的位圖,那麼你應該開始學習圖像處理,然後閱讀一些關於位圖文件格式的內容。這不是一個C++問題。 C++在這樣的任務中只是錦上添花。

在這裏,你可以找到關於圖像處理的一些講座: http://www.archive.org/details/Lectures_on_Image_Processing

這裏是BMP格式的文件的描述: http://www.fileformat.info/format/bmp/spec/e27073c25463436f8a64fa789c886d9c/view.htm

你可以很容易找到很多來源爲其他格式,以及。祝你好運,我在大學三年來一直在研究這個話題......我認爲你應該像David Grayson所建議的那樣,使用一些開源庫。

+0

我一直在研究BMP的過去2天,但我真正需要做的是從每個像素讀取R,G和B顏色值,以便稍後使用它們。我需要使矩陣是m * n,其中m是圖像的寬度和n高度,並在每個元素中存儲顏色值..我無法弄清楚如何去做 – Transcendental 2012-02-05 15:03:24

+0

在哪個平臺上? – vitakot 2012-02-05 16:01:46

+0

在Windows 7 ... – Transcendental 2012-02-05 17:31:21

1

我假設你已經搜索了Google,並沒有發現任何好的東西。

如果我是你,我會首先了解位圖的二進制格式。您可以通過閱讀規範和/或使用十六進制編輯器(如WinHex或ghex2)查看位圖文件來了解它。

然後我會學習如何讀取文件並使用C++中的二進制數據。

不過說真的,你或許可以節省大量的努力,如果你只是使用Magick ++庫:

http://www.imagemagick.org/Magick++/

2

如果要編輯位圖,你只需要瞭解你要編輯的格式。每個組件有多少位,每個像素有多少個組件,定義的寬度和高度在哪裏,以及這些格式文件的標準是什麼。如果你想使用流行的BMP,你可以在Wikipedia找到所有這一切。

如果這一切對你沒什麼意義,那麼你應該首先嚐試數字圖像處理教程。

圖像只是一個結構(像素)的數組,每個都有一定數量的組件,您只需讀寫所述數組即可完成您想要的任何版本。但要注意的是,雖然常見的作物和像素替換幾乎是微不足道的,但高級版本和改變不是。