Изменение заголовка изображения BMP для увеличения высоты и ширины изображения

2000
learnerX

Итак, во время некоторого криптоанализа я считаю необходимым изменить заголовок DIB конкретного изображения BMP, чтобы я мог увеличить высоту и размер изображения.

Вот что мне удалось найти:

typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER, *PBITMAPINFOHEADER; 

Проблема в том, что я не понимаю этого достаточно, чтобы иметь возможность вносить изменения в шестнадцатеричные данные этого изображения BMP для увеличения высоты и размера. Может кто-нибудь сказать, пожалуйста, как я могу увеличить высоту и ширину в 100 раз? Мне не нужно делать это с помощью программы или чего-либо еще, я могу изменить это вручную, если только я знаю, где.

Изменение заголовка изображения BMP для увеличения высоты и ширины изображения

0
Без изменения данных изображения это невозможно. ilkhd 9 лет назад 0
изменение размера - это больше, чем просто переключение двух значений. Вам нужно будет вставить данные пикселей. Если вы хотите увеличить его вручную (вместо добавления данных для мусора), то мы увидимся через десять лет. Кроме того, если вы не знаете, что такое DWORD или как эта структура относится к файлу на диске, вам следует начать свое исследование там. Yorik 9 лет назад 1
@Yorik Спасибо за ваш вклад. Я использовал редактор GIMP для «масштабирования» изображения. Увеличил ширину и высоту в 100 раз и «экспортировал» полученное изображение. Я сейчас пытаюсь криптоанализировать это новое изображение в гекседиторе. Я нахожу много повторяющихся AA.BB.CC ... и т.д. Я думаю, что это часть криптографии. Не могли бы вы сказать мне, что именно происходит, когда GIMP масштабирует изображение? Это добавило значения мусора? Потому что, когда я смотрю на новый файл, я вижу шаблоны, а не мусор. learnerX 9 лет назад 0
Вы сказали, что хотите сделать это вручную. Вы можете заполнить его нулями, но масштабирование x2 означает расширение пикселей и вставку новых данных между ними путем усреднения. Очевидно, что «вручную» это займет ОЧЕНЬ много времени с калькулятором и ручным вводом данных с помощью HEX-редактора. Yorik 9 лет назад 0
При изменении размера вы делаете интерполяцию. Обычно бикубический (http://en.wikipedia.org/wiki/Bicubic_interpolation). Растровые данные могут быть сохранены в виде явной палитры с произвольными значениями цвета и индексом поиска и 1 каналом; или как неявная палитра оттенков серого и 3 канала (RGB). Yorik 9 лет назад 1

1 ответ на вопрос

0
hans

Можно вставить / расширить данные пикселей. То есть - дублируйте каждый пиксель по горизонтали и вертикали, а затем измените BITMAPINFOHEADER и BITMAPFILEHEADER на новые значения. Хотя, нужно написать программу, простую, так как ручная вставка была бы непрактичной. Ссылка ниже - это видео на YouTube, в котором приведены некоторые сведения об изменении размера и BITMAPINFOHEADER, BITMAPFILEHEADER: https://www.youtube.com/watch?v=g8LEbJapnj8.

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. Ramhound 8 лет назад 0

Похожие вопросы