Ändern des BMP-Bildkopfs, um die Höhe und Breite des Bildes zu erhöhen

2252
learnerX

Während einer Kryptanalyse finde ich es daher notwendig, den DIB-Header eines bestimmten BMP-Images so zu ändern, dass ich die Höhe und Größe des Images erhöhen kann.

Folgendes habe ich gefunden:

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; 

Das Problem ist, ich verstehe das nicht genug, um Änderungen an den Hex-Daten dieses BMP-Images vornehmen zu können, um die Höhe und Größe zu erhöhen. Könnte mir bitte jemand sagen, wie ich die Höhe und Breite auf 100 erhöhen kann? Ich muss dies nicht mit einem Programm oder irgendetwas tun, ich kann es manuell ändern, wenn ich nur wüsste, wo.

Ändern des BMP-Bildkopfs, um die Höhe und Breite des Bildes zu erhöhen

0
Ohne das Ändern der Bilddaten ist es unmöglich. ilkhd vor 9 Jahren 0
Das Ändern der Größe ist mehr als nur das Umschalten zwischen zwei Werten. Sie müssen die Pixeldaten einfügen. Wenn Sie es manuell vergrößern möchten (anstatt Mülldaten hinzuzufügen), sehen wir uns in zehn Jahren wieder. Wenn Sie nicht wissen, was ein DWORD ist oder wie sich diese Struktur auf die Datei auf der Festplatte bezieht, sollten Sie Ihre Recherche dort beginnen. Yorik vor 9 Jahren 1
@Yorik Danke für deine Eingabe. Ich habe den GIMP-Editor verwendet, um das Bild zu "skalieren". Breite und Höhe um das 100-fache erhöht und das resultierende Bild "exportiert". Ich versuche jetzt, dieses neue Bild in einem Hexeditor zu verschlüsseln. Ich finde viele wiederholte AA.BB.CC ... usw. Ich denke, es ist Teil der Kryptographie. Können Sie mir genau sagen, was passiert, wenn GIMP das Bild skaliert? Hat es Müllwerte hinzugefügt? Denn wenn ich mir die neue Datei ansehe, sehe ich eher Muster als Müll. learnerX vor 9 Jahren 0
Sie sagten, Sie wollten es manuell machen. Sie könnten es mit Null füllen, aber Skalieren von x2 bedeutet, die Pixel zu verteilen und durch Mittelung neue Daten zwischen ihnen einzufügen. Offensichtlich würde "manuell" dies mit einem Taschenrechner sehr zeitaufwendig werden und die Daten manuell mit einem HEX-Editor eingeben. Yorik vor 9 Jahren 0
Bei der Größenänderung führen Sie eine Interpolation durch. Normalerweise bicubic (http://en.wikipedia.org/wiki/Bicubic_interpolation). Bitmap-Daten können als explizite Palette mit beliebigen Farbwerten und einem Suchindex und einem Kanal gespeichert werden. oder als implizite Graustufenpalette und 3 Kanäle (RGB). Yorik vor 9 Jahren 1

1 Antwort auf die Frage

0
hans

Man kann die Pixeldaten einfügen / erweitern. Das heißt, dass Sie jedes Pixel horizontal und vertikal duplizieren und dann BITMAPINFOHEADER und BITMAPFILEHEADER in die neuen Werte ändern. Allerdings muss man ein Programm schreiben, ein einfaches, da das manuelle Einfügen nicht praktikabel ist. Der Link unten ist ein YouTube-Video, das Hintergrundinformationen zu Größenänderung und BITMAPINFOHEADER, BITMAPFILEHEADER bietet: https://www.youtube.com/watch?v=g8LEbJapnj8

Obwohl dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. Ramhound vor 8 Jahren 0