1
我想在C++中打開一個位圖文件,改變它,然後創建另一個位圖文件。問題是當我嘗試使用ofstream輸出位圖文件時,即使不更改文件的任何字節,它也有一個奇怪的輸出。用ofstream創建一個位圖文件有一個奇怪的輸出
#include <fstream>
using namespace std;
int main()
{
ifstream fin ("6.bmp", std::ios::binary);
ofstream fout ("output.bmp");
for (int i = 0; i < 1920*1080*3 + 54; i++)
fout.put(fin.get());
}
1920 * 1080是圖片大小,* 3是紅色,綠色,藍色。我知道一個位圖文件有一個54字節的標題,所以我認爲在6.bmp中有正確的1920 * 1080 * 3 + 54字節;
當輸入爲:input
然後我得到this輸出。
(ⅰ調整大小既圖片上傳他們,但他們都是1920 * 1080)
我編譯該代碼使用g ++在windows 8.1。我不想使用位圖庫。
*並且我不想使用位圖庫* - 您實際上認爲可以用一行'fout'循環來調整位圖的大小? – PaulMcKenzie
你是否用'DIR'檢查文件的大小,因爲你對長度的假設可能是錯誤的 - 由於填充和其他的東西。 –
什麼是輸入和輸出文件的實際大小? STL流對於二進制文件不是一件好事,它通常以不同的方式表現出'\ 0'和'\ n'。 – ilotXXI