Я пытаюсь открыть файл растрового изображения, отредактировать его, а затем сохранить отредактированную версию в виде нового файла. В конечном итоге это связано с использованием стеганографии. Я пытаюсь сохранить информацию растрового изображения сейчас, но сохраненный файл не открывается. Нет ошибок в компиляции или времени выполнения. Он отлично работает, а остальные функции работают.C++ bitmap edit
void cBitmap::SaveBitmap(char * filename)
{
// attempt to open the file specified
ofstream fout;
// attempt to open the file using binary access
fout.open(filename, ios::binary);
unsigned int number_of_bytes(m_info.biWidth * m_info.biHeight * 4);
BYTE red(0), green(0), blue(0);
if (fout.is_open())
{
// same as before, only outputting now
fout.write((char *)(&m_header), sizeof(BITMAPFILEHEADER));
fout.write((char *)(&m_info), sizeof(BITMAPINFOHEADER));
// read off the color data in the bass ackwards MS way
for (unsigned int index(0); index < number_of_bytes; index += 4)
{
red = m_rgba_data[index];
green = m_rgba_data[index + 1];
blue = m_rgba_data[index + 2];
fout.write((const char *)(&blue), sizeof(blue));
fout.write((const char *)(&green), sizeof(green));
fout.write((const char *)(&red), sizeof(red));
}
}
else
{
// post file not found message
cout <<filename << " not found";
}
// close the file
fout.close();
}
Я предлагаю получить шестнадцатеричный редактор и посмотреть на различия между исходным файлом и сохраненной программой. (Не смотрите на фактические данные пикселов, но смотрите на заголовки, размер файла и т. Д.) – immibis
http://ideone.com/uHe35B – Brandon
Я сделал это, заголовок одинаковый для обоих. Спасибо, но –