Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Transparentes GIF und JPEG zusammenlegen (https://www.delphipraxis.net/142456-transparentes-gif-und-jpeg-zusammenlegen.html)

sega84 28. Okt 2009 14:33


Transparentes GIF und JPEG zusammenlegen
 
Hallo zusammen,
habe eine kleine Frage:
Für einen Kunden müssen wir JPEG Bilder mit einem Wasserzeichen versehen. Das Wasserzeichen ist selbst ein kleines GIF, welches das Firmenlogo zeigt. In der GIF-Datei hat nur der Firmen-Name eine Farbe, alles andere (der Hintergrund) ist Transparent.
Wie kann ich diese beiden Bilder in Delphi zusammenfügen, so dass das JPEG in den Hintergrund liegt und das GIF irgendwo auf dem JPEG plaziert wird. Eventuell wäre es auch interessant, wenn das Wasserzeichen halb-transparent wäre.
Hoffe ihr habt ein paar Ideen für mein Problemchen....
danke

turboPASCAL 28. Okt 2009 14:38

Re: Transparentes GIF und JPEG zusammenlegen
 
Das einfachste wäre wenn das Logo als Png vorliegen würde.
Ab Windows XP könnte man auch MSDN-Library durchsuchenAlphaBlend verwenden.

Könnte dann so aussehen:
http://www.delphipraxis.net/internal...375&highlight=

sega84 28. Okt 2009 14:45

Re: Transparentes GIF und JPEG zusammenlegen
 
Zitat:

Zitat von turboPASCAL
Das einfachste wäre wenn das Logo als Png vorliegen würde.

Das Logo habe ich als PNG... Nur sagt mir die AlphaBlend-Funktion nichts. Gibt es ein Beispiel oder so dafür?

turboPASCAL 28. Okt 2009 17:09

Re: Transparentes GIF und JPEG zusammenlegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohne SChickscnack, der wohl einfachste Weg ist:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y: integer;
begin
  OpenPictureDialog1.Filter :='jpegfiles|*.jpg';
  if OpenPictureDialog1.Execute then
  begin
    bmp := TBitmap.Create;
    try
      image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); // JPEG
      bmp.Width := image1.Picture.Width;
      bmp.Height := image1.Picture.Height;
      bmp.PixelFormat := pf24Bit;
      bmp.Canvas.Draw(0, 0, image1.Picture.Graphic);
      image1.Picture.Assign(bmp);

      x := (image1.Picture.Width div 2) - (image2.Picture.Width div 2);
      y := (image1.Picture.Height div 2) - (image2.Picture.Height div 2);
      image1.Canvas.Draw(x, y, image2.Picture.Graphic); // Draw the PNG-Logo
    finally
      bmp.Free;
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz