Ich habe ein 24-Bit unkomprimiertes Bitmap in ein 2D-Array von R, G, B unsignierten Zeichen geladen und dann erneut gespeichert. Ich verwende Dateiströme im Binärmodus, um sicherzustellen, dass keine automatische Formatierung erfolgt , und die Kopfzeile wird genauso exportiert wie das Ganze ... Padding ist nicht erforderlich, da ich Bilder verwende, die ein Vielfaches von 4 in der Breite sind.Bitmap-CURROPTS nach dem Laden und Speichern
Doch der Ausgang hat das beigefügte Problem, eine Art ... Deformation
Hinweis: ich sowohl FILE und fstream in binären Modi ausprobiert und alle gaben diesen Ausgang Eine andere Sache ist, dass auf den Ausgang mit der Überprüfung ein Hex-Editor Ich fand, dass es eine sehr wiederholte Wert von "CD" hat, die eine Art von Korruption scheint.
Update: Der Quellcode:
#include <fstream>
#include <iostream>
#pragma pack(2)
using namespace std;
struct RGB
{
unsigned char R,G,B;
};
int main()
{
ifstream f("Picture.bmp",ios::in|ios::binary);
unsigned char Header[54];
f.read(reinterpret_cast <char*> (Header),54);
int W=*(int*) (&Header[18]);
int H=*(int*) (&Header[22]);
RGB**Pic=new RGB*[H];
for (int i=0;i < H;i++)
{
Pic[i]=new RGB[W];
for (int i2=0;i2<W;i2++)
{
f>>Pic[i][i2].R;
f>>Pic[i][i2].B;
f>>Pic[i][i2].G;
}
}
ofstream save("Output.bmp",ios::out|ios::binary);
save.write(reinterpret_cast<char*>(&Header),54);
for (int i=0;i < H;i++)
{
for (int i2=0;i2<W;i2++)
{
save<<Pic[i][i2].R;
save<<Pic[i][i2].B;
save<<Pic[i][i2].G;
}
}
return 0;
}
Vielen Dank im Voraus.
ohne Code, wäre jede Antwort Spekulation. Bitte geben Sie den Code an, den Sie haben. als eine Randnotiz '0xCD' ist ein nicht initialisierter Speicherwert in Visual Studio – vu1p3n0x
Ich habe den Code angehängt, also wirft er nicht initialisierte Werte in den Stream? – Virtuoso