C++: .bmp-zu byte-array in eine Datei
Habe ich ja schon durch die anderen Fragen, die im Zusammenhang mit diesem, aber ich fand Sie nicht viel helfen. Sie waren einige helfen, aber ich bin noch ein bisschen verwirrt. So, hier ist was, was ich tun muss:
Haben wir eine 132x65 Bildschirm. Ich habe eine 132x65 .bmp. Ich möchte gehen durch die .bmp zu trennen und in kleine 1x8 Spalten zu bekommen, die binäre der, dass 32-bit-Spalte. Dann, dass der 132 mal über, und zwar 9-mal nach. Alles, was nicht weiß ist soll gezählt werden wie ein bisschen. Beispiel:
Wenn die Obere linke pixel des Bildes, jede Farbe, die nicht weiß ist und die 7 Pixel unter, die weiß sind, dann wäre das das erste element des Arrays, die hex von dieser Zahl, also das array würde dann so Aussehen:
array [] = { 0x01 } und dann würde es weiterhin zu füllen, die durch diese 132 Spalten und dann tun Sie es wieder für 9 "Abschnitte" der Zeilen. Und die Datei das Ergebnis wäre NUR, dass array in einer separaten Datei.
Verstehe ich die header-format für diese, ich habe den wiki-Artikel .bmp-Datei-Formate, mein Hauptproblem ist, ich weiß wirklich nicht, wie die Interaktion mit der .bmp als ich eigentlich wollen, dass es nach innen zu gehen und die Interaktion mit jedem pixel aus dem Bild. Ich wirklich nicht brauchen, die ganze Sache, aber vielleicht nur ein Beispiel, greifen jedes pixel aus .bmp-und Ausgabe die Farbe der pixel in einer Datei oder so etwas. Mein c++ ist etwas eingerostet (seit tun, java und javscript in letzter Zeit).
Nein, ich bin bereit, alle von Ihnen verwenden. Ich habe mir über einige von Ihnen aber nicht wirklich sicher, was ist am besten/einfachsten/schnellsten für so etwas.
Ich habe vor allem versucht, mit CImage-Klasse. Mein problem ist, ich weiß wirklich nicht, wie die Interaktion mit der .bmp-Datei. Ich muss nur ein Beispiel von arbeiten jemand vielleicht so einfach wie das gehen auf einem .bmp-Datei und die Festlegung eines pixel-Farbe oder etwas. Wie ich schon sagte, es hat eine Weile, da ich getan habe, alle c++ - so habe ich das Gefühl, ich bin einfach nur verwirrend mich, wenn ich versuche, die Interaktion mit dem .bmp-Datei.
InformationsquelleAutor ageoff | 2012-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen Lesen Sie einem bekannten format BMP und kümmern sich nicht darum, wie es gemacht wird (also nur intern) Sie können nehmen Sie einfach die BMP, ignorieren Sie den Kopf und verwenden Sie es als ein pixel-array. Es wird gespeichert, Zeile für Zeile, beginnend an der unteren linken Seite. Es gibt einige detail-Tücken, wie es verpackt ist, aber nach meiner Erfahrung, wenn Sie einen 32bpp Bild es kann komplett ignoriert werden.
Als ein ganz einfaches Beispiel:
Hinzugefügt ein code-Beispiel. Die 54 ist, was ich in der Regel finden Sie in bmp-Dateien, aber es kann unterschiedlich sein für die ihrigen, je nach optionale Header. Für Klarheit, öffnen Sie mit einem hex-editor und sehen Sie selbst.
Sie sagen, "beginnt auf der unteren linken Seite." und dann in dem Beispiel "beginnt von Links oben". Möglicherweise müssen einige Klarstellungen..
Okay, also ich habe es herausgefunden, ich habe gelesen out of bounds. dumm mich. Aber hier ist meine Frage, warum es immer wieder null? was ist der Wert, den ich von getpixel? gibt es trotzdem, um den Wert von getpixel gibt 0 zurück, wenn seine weißen und 1, wenn Ihr eine andere Farbe?
Der Wert, den Sie von ihm bekommen ist der RGB-Wert eines bestimmten pixels. Beachten Sie, dass mein Beispiel geht von 32-bit-Farbe BMPs der korrekten Seitenverhältnis mit dem erwarteten Kopf.
InformationsquelleAutor dascandy
Ich hatte das gleiche problem, aber durch das Lesen BMP-Datei Beschreibung format ich schrieb eine Funktion, die liest .BMP-Datei und speichert Sie in einem array.
Vielleicht diese Funktion kann Ihnen helfen:
InformationsquelleAutor cpt.mazi