Problem mit JPG und DBImage



  • folgendes problem:
    ich kann mit

    DBImageMain->Picture->LoadFromFile(OpenDialog->FileName);
    

    sowohl bmps als auch jpgs in ein DBImage hereinladen, beim abspeichern der daten werden jedoch nur bmp's mitgespeichert, die jpgs werden automatisch wieder gelöscht...

    deshalb versuchte ich mit dem folgenden code die jpgs in bmps umzuwandeln:

    if(OpenDialog->Execute())
         {
          //for jpg files
          if((ExtractFileExt(LowerCase(OpenDialog->FileName)) == ".jpg") ||
             (ExtractFileExt(LowerCase(OpenDialog->FileName)) == ".jpeg"))
          {
           TImage *MyNewImage = new TImage(Application);
           MyNewImage->Picture->LoadFromFile(OpenDialog->FileName);
    
           TJPEGImage  *MyNewJPEGImage = new TJPEGImage();
           MyNewJPEGImage->Assign(MyNewImage->Picture->Bitmap);
           MyNewImage->Picture->Bitmap->Assign(MyNewJPEGImage);
           delete MyNewJPEGImage;
    
           DBImageMain->Picture->Bitmap = MyNewImage->Picture->Bitmap;
           delete MyNewImage;
          }
          //for bmp files
          else
          {
           DBImageMain->Picture->LoadFromFile(OpenDialog->FileName);
          }
         }
    

    nun werden aber die jpgs nicht einmal mehr in DBImage angezeigt, bmps funktionieren weiterhin fehlerfrei. kann aber keinen fehler entdecken. irgendwelche ideen???



  • hat niemand eine idee?
    kann mir vielleicht jemand sagen, wie ich ein jpg in ein bmp konvertieren kann, welches dann auch ein wirkliches bitmap ist? (bei diesem bsp muss sich das konvertierte bmp von einem originalen bmp irgendwie unterscheiden, ansonsten würde es ja funktionieren)



  • Den Umweg über TImage kannst du dir jedenfalls sparen, siehe FAQ unter Grafik.

    Ansonsten wäre noch interessant, was genau du mit "abspeichern der daten" meinst.



  • Also im Prinzip habe ich ein Form mit einigen TDBEdits und einem TDBImage, deren Inhalte in einer Datenbank (mit TTable & TDataSource) abgespeichert werden. (Navigation erfolgt mit TDBNavigator).
    Wurde in TDBImage ein BMP-File geladen, wird dieses nach einem Klick auf "Post" im TDBNavigator fehlerfrei gespeichert.
    Wurde aber ein JPG geladen und ich klicke auf "Post" so wird nichts gespeichert und der Inhalt von TDBImage wieder gelöscht (weißes Bild).



  • Von welchem Typ ist das entsprechende Feld in der DB bzw. Tabelle?



  • .db Datei wurde mit dem integr. Borland Database Desktop erzeugt. Feldtyp ist G (Graphic) mit der max. Größe von 240.



  • Wenn Du in ein TImage eine JPeg oder GIF- Datei laedst, ist in ...->Bitmap des Image NICHTS als ein leeres Bitmap!!!

    Die Graphic ist in ...Picture->Graphic enthalten!

    Wenn Du ein Bitmap laedst, ist das in ...Bitmap und in ...Picture->Graphic ist NICHTS gescheites!!!

    Also:

    Zum Umwandel einer JPeg oder GIF- Datei:

    1. Image->Loadfromfile(JPEGDATEINAME);
    2. erzeuge ein TBitmap
    3. stelle Groesse de4s Bitmap ein
    4. mit Canvas->Draw des Bitmap ddie Graphic ins Bitmap zeichnen

    5. Dann kannste Bitmap->SaveToFile(WASWASI); erfolgreich machen!



  • hab jetzt folgendes versucht:

    TImage *Image = new TImage(Application);
    Image->Picture->LoadFromFile(OpenDialog->FileName);
    
    Graphics::TBitmap* Bitmap = new Graphics::TBitmap();
    Bitmap->Canvas->Draw(Image->Width, Image->Height, Image->Picture);
    

    das funktioniert auch nicht, da er in der letzten zeile ein bitmap erwartet. und wenn ich in der letzten zeile

    Image->Picture->Bitmap
    

    schreibe, habe ich wieder ein leeres bild. 😞



  • So:

    Bitmap->Width=Image->Width;
    Bitmap->Height=Image->Height;

    Bitmap->Canvas->Draw(0,0, Image->Picture**->Graphic**);



  • endlich! es funktioniert! 🕶
    THX



  • Stehe vor dem gleichen Problem, nur bei mir gehts überhaupt nicht :(.

    Wie hast du das gemacht? Bin noch recht Neu auf dem Gebiet. Kannst du mir helfen?

    Wäre super!

    MfG


Log in to reply