Ausgabe in binär ändern (Bildbearbeitung)
-
Hallo zusammen,
beim Schreiben eines Programmes zur Bildbearbeitung habe ich folgenden Ausgabeoperator geschrieben:ostream& operator << (ostream &s, const GreyScale &g) { int form = g.format; switch (form) { case 0:{ // ASCII_PGM s << "P2\n" << "# Neues Bild im ASCII PGM Format (0)\n" << g.width << ' ' << g.height << "\n" << 255 << "\n"; int j=16; for (int i=0; i<g.width*g.height; i++) { if(j==0) { s << "\n"; j=16; } j--; s << (int)round(g.farbe[i]*255) << ' '; } break;} case 1:{ // PGM_RAW s << "P5 " << "# Neues Bild im PGM_RAW Format (1)\n" << g.width << ' ' << g.height << " " << 255 << "\n"; int j=g.width; for (int i=0; i<g.width*g.height; i++) { if(j==0) { s << "\n"; j=g.width; } j--; s << (int)round(g.farbe[i]*255) << ' '; } break;} case 2:{ // HUFFMAN s << "MHa\n" << "# Neues Bild im Huffman-Code \n"; GreyScale hilf(g); s << g.width << ' ' << g.height << "\n"; hilf.BuildHist(); for (int i=0; i<=255; i++) { s << hilf.hist[i]; if (i==255) s << "\n"; else s << " "; } hilf.BuildHuff(); int k=g.width; for (int j=0; j<g.width*g.height;j++) { if(k==0) { s << "\n"; k=g.width; } s << hilf.gethuff((int)round(hilf.farbe[j]*255)) << ' '; k--; } break;} case 3: { s << "MHb\n" << "# Neues Bild im Huffman-Code mit Transformation \n"; GreyScale hilf(g); hilf.transform(); s << g.width << ' ' << g.height << "\n"; hilf.BuildHist(); for (int i=0; i<=255; i++) { s << hilf.hist[i]; if (i==255) s << "\n"; else s << " "; } hilf.BuildHuff(); int k=16; for (int j=0; j<g.width*g.height;j++) { if(k==0) { s << "\n"; k=16; } s << hilf.gethuff((int)round(hilf.farbe[j]*255)) << ' '; } break;} // HUFFMAN_TRANSFORM default: g.GreyScaleFehler("Illegales Format! Sofort stehen bleiben!"); } return s << "\n"; }Jetzt würde ich die Ausgabe gerne in binär haben. Hätte da irgendjemand nen Tipp, wie ich da vorgehen kann?
Dankeschön schonmal
-
code-tags ftw

-
In ein File kannst du das angeben, dass er binär schreiben soll.
http://www.cplusplus.com/reference/iostream/ofstream/ofstream.html
-
Oki. ich erkläre mich jetzt offziell für zu dämlich dafür. Hab mal den ersten Teil folgendermaßen umgeschrieben:
ofstream GreyscaleO; void ofstream::open(const char *Greyscale, ios::openmode mode=ios::binary|ios::out); { GreyscaleO.write ("P5 "); GreyscaleO.write("# Neues Bild im PGM_RAW Format (1)"); GreyscaleO.write ( g.width << ' ' << g.height << " " << 255 << " /n"); int j=g.width; for (int i=0; i<g.width*g.height; i++) { if(j==0) { GreyscaleO.write( "/n "); j=g.width; } j--; s << (int)round(g.farbe[i]*255) << ' '; }Aber das kanns nicht gewesen sein, oder? Im Moment hab ich noch das Problem, dass ich hier an nem compilerlosen Rechner sitze und deshalb sich die Möglichkeit der Überprüfung nicht bietet. Aber das ist ziemlich sicher falsch...
(und ich scheiter schon an den Code Tags...Ich brech zusammen)
-
Sind die code/cpp-Tags kaputt oder wie?
testvoid &main(void*,float*);
-
[ cpp]
<hier code>
[/ cpp]wenn du die lerzeichen weglässt, dann sieht es auch so toll aus, wie
test123 schrieb:
void &main(void*,float*); //interessant ^^musste ich einfach ma quoten ; D
bb