TImage->Picture->Bitmap nach Graphics::TBitmap übergeben



  • Hallo zusammen,

    ich suche nach einer einfachen Möglichkeit, ein jpg in ein Bitmap (Graphics::TBitmap) zu laden.

    Bisheriger Versuch
    Ich lade ein .jpg in ein TImage, speichere es als .bmp und lade es anschließend nach Graphics::TBitmap .

    // jpg lesen
    Image3->Picture->LoadFromFile("c:\\test\\Beispiel.jpg");
    
    // bmp schreiben
    Image3->Picture->SaveToFile("c:\\test\\Beispiel.bmp"); // das hier geht
    

    Das Bild wird korrekt gespeichert, und kann über die Vorschau im Explorer angezeigt werden.

    // bmp lesen
    Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
    pBitmap->LoadFromFile("c:\\test\\Beispiel.bmp");
    
    // Fehlermeldung: Exception der Klasse EInvalidGraphic aufgetreten. Meldung: 
    // 'Bitmap ist ungültig'.
    

    Weiß jemand Rat?

    Gruß
    Leo



  • // jpg lesen
    Image3->Picture->LoadFromFile("c:\\test\\Beispiel.jpg");
    
    // bmp schreiben
    Image3->Picture->SaveToFile("c:\\test\\Beispiel.bmp"); // das hier geht
    

    Eben genau geht nicht, du hast lediglich den Dateinamen geändert, das ändert aber nicht den Typ von bmp -> jpg.



  • Hallo,

    ich wollte das selbe vor kurzem auch machen und bin dabei auf diese Lösung gestoßen:

    http://stackoverflow.com/questions/959160/load-jpg-gif-bitmap-and-convert-to-bitmap

    TPicture* pPicture = new TPicture();
    pPicture->LoadFromFile("c:\\test\\Beispiel.jpg");
    Graphics::TBitmap* pBitmap = new Graphics::TBitmap();
    pBitmap->Width = pPicture->Width;
    pBitmap->Height = pPicture->Height;
    pBitmap->Canvas->Draw(0, 0, pPicture->Graphic);
    pBitmap->SaveToFile("c:\\test\\Beispiel.bmp");
    delete pPicture, pBitmap;
    

    Gruß
    Kerem



  • Hallo,
    zum Laden von JPEGs gibt es die Klasse TJPEGImage.

    #include <jpeg.hpp>
    
    UnicodeString usFileName = "C:\\MyImage.JPG"
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
    TJPEGImage *JPG = new TJPEGImage;
    JPG->LoadFromFile(usFileName);
    Bitmap->Assign(JPG);
    delete JPG;
    ....
    ....
    delete Bitmap;
    


  • Beide Varianten funktionieren prima, mille grazie!
    Leo


Anmelden zum Antworten