Announcement

Collapse
No announcement yet.

Bitmap von 8bit nach 24bit konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bitmap von 8bit nach 24bit konvertieren

    Hallo allerseits,

    Wie kann ich ein Bitmap mit beliebiger Farbtiefe in ein Bitmap mit 24-bit Farbtiefe konvertieren? Ich habe versucht es mit "PixelFormat:=pf24bit" zu lösen, wobei mir aufgefallen ist, daß bei einigen Grafikprogrammen(PSP, Photo Impact und Word,...) die Grafik verschoben und die Farben verfälscht dargestellt werden. Zum Beispiel mit MS-Paint(Windows) oder Delphi wird die konvertierte Grafik korrekt dargestellt.

    Was mache ich falsch? Die Online-Hilfe gibt darüber nur sehr wenig Auskunft.

    Ich bin für jeden Hinweis dankbar!!!

    mfg
    Ringo

  • #2
    Nichts !?

    Sollte so eigentlich funktionieren. Vielleicht liegt es aber am Speichern solcher Bitmaps. Alternativ machst Du folgendes:

    <pre>

    procedure SaveBMPAs24Bit(const FileName: String; Source: TBitmap);
    var
    B: TBitmap;
    begin
    B := TBitmap.Create;
    try
    B.PixelFormat := pf24Bit;
    B.Width := Source.Width;
    B.Height := Source.Height;
    B.Canvas.Draw(0, 0, Source);
    B.SaveToFile(FileName);
    finally
    B.Free;
    end;
    end;

    </pre>

    Falls es funktioniert bitte ich mir eine Benachrichtigung aus )

    Gruß Hage

    Comment


    • #3
      Besten Dank für die schnelle Hilfe!

      Die Procedure funktioniert problemlos. Ich hatte lediglich versucht vor dem Speichern der Bitmap PixelFormat den entsprechenden Wert zu zuweisen. Ein zusätzliches "Bitmap.Canvas.Refresh;" brachte ebenfalls keinen Erfolg;

      Demnach sollte man die Konvertierung mittels eines zusätzlichen TBitmap-Objektes durchführen(wie in Procedure geschehen).

      mfg
      Ring

      Comment


      • #4
        Hm, probier mal:

        <pre>

        Bitmap.PixelFormat := pf24Bit;
        Bitmap.HandleType := bmDIB;
        Bitmap.Dormant;
        Bitmap.SaveToFile(xxxx);

        </pre>

        Gruß Hage

        Comment


        • #5
          Der Befehl "Bitmap.Dormant;" vor dem Speichern war entscheident. Also somit funktionieren beide Varianten.

          Nochmals vielen Dank für die Hilfe!

          mfg
          Ring

          Comment

          Working...
          X