Warum kann ich ein BitMap nicht in eine *.txt datei kopieren und wieder zum BitMap machen?



  • Hallo,
    eigendlich wollte ich ein Bitmap mit C++ einlesen und verändern.
    Ich habs aber irgentwie nie wieder zu einem Bild zusammen bekommen.
    Dann hab ich probiert ob man überhaupt ein Bitmap zu einer txt Datei machen kann und den Inhalt dann in eine neue txt Datei kopieren kann und diese dann wieder in eine Bitmap Datei zurück machen kann. Aber irgentwie geht dass nicht.
    Kann mir irgentjemand von euch sagen warum das nicht funktioniert.
    Danke!!!


  • Mod

    shorty0802 schrieb:

    Hallo,
    eigendlich wollte ich ein Bitmap mit C++ einlesen und verändern.
    Ich habs aber irgentwie nie wieder zu einem Bild zusammen bekommen.

    was soll zusammenbekommen bedeuten? kopiere? umbenennen? convertieren? wie genau hast du das versucht?

    Dann hab ich probiert ob man überhaupt ein Bitmap zu einer txt Datei machen kann

    machen? du meinst umbenennen? das geht, aber der inhalt ist danach recht nutzlos.

    und den Inhalt dann in eine neue txt Datei kopieren kann und diese dann wieder in eine Bitmap Datei zurück machen kann.

    du meinst in nem texteditor? dann wieder in bmp umbenennen? editoren zeigen viele zeichen nicht an bzw interpretieren diese anders, weil es keine textzeichen dafuer gibt, gerade wenn die ersten paar bytes so kaputt gehen ist das ganze bild nutzlos. du kannst sowas mit nem hexeditor probieren.

    Kann mir irgentjemand von euch sagen warum das nicht funktioniert.
    Danke!!!

    wenn du statt machen, tun, bekommen schreiben wuerdest was du meinst, koennte man ohne raten genauer antworten.



  • Also am Anfang hab ich einfach mal Probiert den Inhalt eines Bitmap mit C++ einzulesen und dann wieder in ein Bitmap auszugeben . Die damit erzeugte Datei war aber nutzlos.Dann hab ich einfach die Endung von einem Bitmap in ein txt Endung umgeändert. Wenn man dannach die Endung wieder zurückändert konnte ich das Bild immernich öffnen. Deswegen habe ich gedacht dass beim Ändern der Dateiendung nichts verloren geht aber anscheinend ist dass doch nicht ganz so einfach.
    Hab mir mal einen Hex Editor heruntergeladen und guck mir den mal genauer an.
    Danke



  • shorty0802 schrieb:

    Also am Anfang hab ich einfach mal Probiert den Inhalt eines Bitmap mit C++ einzulesen und dann wieder in ein Bitmap auszugeben . Die damit erzeugte Datei war aber nutzlos.

    Dann hast du beim ein- oder auslesen mit C++ was falsch gemacht.

    shorty0802 schrieb:

    Deswegen habe ich gedacht dass beim Ändern der Dateiendung nichts verloren geht aber anscheinend ist dass doch nicht ganz so einfach.

    Ich weiß nicht was du gemacht hast aber es gehen keine Daten verloren wenn du den Namen einer Datei änderst.

    shorty0802 schrieb:

    Hab mir mal einen Hex Editor heruntergeladen und guck mir den mal genauer an.

    Den Aufbau des Formats findest du frei im Internet, da brauchst du nicht mit irgendwelche Editoren zu hantieren.



  • Du musst die .bmp Datei natürlich im binary modus lesen/schreiben, also nicht als ascii:

    ifstream myFile ("data.bin", ios::in | ios::binary);
    http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
    

  • Mod

    Gast25250 schrieb:

    Du musst die .bmp Datei natürlich im binary modus lesen/schreiben, also nicht als ascii:

    ifstream myFile ("data.bin", ios::in | ios::binary);
    http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
    

    👍 genau das wird vermutlich das problem sein... falls du nicht gerade bugs hast 🙂



  • Dann müsste des doch eigntlich so funktionieren.

    #include<iostream>
    #include<string>
    #include<fstream>
    
    using namespace std;
    
    int main()
    {
        fstream file;
        fstream file2;
        file.open("open.bmp",ios::in|ios::binary);
        file2.open("open2.bmp",ios::out|ios::binary);
        while(!file.eof())
        {
            file>>a;
            file2<<a;
        }
    }
    


  • Also auf jeden Fall wird diese Code nicht funktionieren, weil die Variable a nicht deklariert wurde. 🤡


Anmelden zum Antworten