Я пытаюсь создать программу, которая изменяет размер изображения bmp на коэффициент f, но у меня возникают проблемы с определением, что происходит с программой.Я подумал об использовании gdb для проверки того, что читается из исходного изображения и записывается в новое изображение, но когда я пытаюсь распечатать содержимое окончательного изображения, оно кажется другим, чем я ожидал.
Итак, программа изначально читает с первого изображения через указатель файла с именем inptr
.Первые 14 и 40 байтов из первого изображения сохраняются в переменной типа bitmapfileheader и bitmapinfoheader с именами bf
и bi
, которые составляют 14 и 40 байтов соответственно.Свойства этих структур изменяются с учетом изменения размера конечного изображения.Затем структуры записываются в новый файл с помощью указателя outptr
. После записи структур в новый файл я печатал содержимое bf (в gdb) с помощью команды
print bf
и распечатывает
{bfType = 19778, bfSize = 670, bfReserved1 = 0, bfReserved2 = 0, bfOffBits = 54}
Здесь та же информация при использовании команды p/x bf
для ее форматирования в шестнадцатеричном формате
{bfType = 0x4d42, bfSize = 0x29e, bfReserved1 = 0x0, bfReserved2 = 0x0, bfOffBits = 0x36}
Проблема возникает, когда я пытаюсь распечататьсодержимое нового изображения.Я использовал эту команду для печати первых 14 байтов
`x /14xh outptr`
, которые печатают
0x603250: 0x2c84 0xfbad 0x0000 0x0000 0x4000 0xf7ff 0x7fff 0x0000
0x603260: 0x4000 0xf7ff 0x7fff 0x0000 0x4000 0xf7ff
Кажется, что все байты отличаются от того, что было сохранено в bf
.Я надеялся использовать команду x в gdb для вывода чего-то похожего на то, что xxd делает в терминале, но я не уверен, почему содержимое outptr отличается от bf
struct.
Здесьссылка на исходный код , а вот заголовочный файл bmp.h .