![]() |
jpg mit png verschmelzen
Hallo Wissende!
Gibt es eine Möglichkeit auf ein vorhandenes jpg-Bild ein png zu legen und beide dann zu verschmelzen und daraus ein jpg zu machen??? Ich habe vor, durch einen automatisierten Vorgang eine Bildliste abzuarbeiten und alle jpg´s mit einem png zu verschmelzen, sozusagen Transparenzen auf eine feste Hintergrundfarbe auf das Jpg zu legen, damit ein Effekt eine Alphakanales entsteht. Wie könnte ich das realisieren? Danke Tom |
Re: jpg mit png verschmelzen
Meines Wissens gar nicht, da das JPEG Format keine Transparenz unterstützt. Entweder wandelst du es in PNG um und legst die transparente Farbe fest oder entwicklest ein eigenes Format.
|
Re: jpg mit png verschmelzen
Danke für Deine Antwort!
OK, wahrscheinlich habe ich mich falsch oder unverständlich ausgedrückt. Der Background der HTML-Seite ist gelb. Ich habe ein Bild. jpg-Format. Darauf ist ein Haus. Dann habe ich noch ein png-Bild, welches innen volldeckend ist, damit man das Haus sieht und am äusseren Rand ein Verlauf in eine Farbe (gelb) hat, um das Bild mit dem Hintergrund zu verschmelzen. Nun will ich das png-Bild auf das Jpg Stanzen und ein Jpg erhalten, wo das Haus zu sehen ist und der Verlauf nach aussen hin ins gelbe übergeht. Geht das? |
Re: jpg mit png verschmelzen
erst das eine bild auf eine canvas malen und dann das andere bild darüber (das drübermalen natürlich mit berücksichtigung welche farbe an der stelle der canvas bereits vorhanden ist). Hast du quelltextmäßig schon angefangen und kommst an irgend einer stelle nicht weiter oder wo liegt derzeit dein problem bei der umsetzung?
|
Re: jpg mit png verschmelzen
ok, das mit dem malen ist mir klar!
Der Punkt an dem ich nicht weiterkomme, ist der, dass ja das png ein Schwarz-weiss-Bild ist und ich nicht weiss, wie und wo ich festlegen kann, dass da wo das weisse ins schwarze übergeht ein übergang von weiss ins gelbe zum beispiel kommt... |
Re: jpg mit png verschmelzen
ist gar nicht so schwer, du musst dir nur vorher überlegen ob schwarz 100% transparenz darstellt oder weiß. Wenn du jetzt schwarz als Transparenz verwendest so musst du bei einem schwarzen pixel gar nichts machen weil ja 100% transparent. Bei einem weißen pixel malst du dasPixel wie es ist auf die Canvas und ansonstne musst du die Farben im Verhältnis mischen (da gibt dann der grauwert an zu welchen teilen gemicht wird)
hier ne funktion um 2 farben zu mischen
Delphi-Quellcode:
Bei blendintensity gibst du den schwarzweiß-wert des pixels an und für die anderen beiden Farben eben die Farben die gemischt werden sollen
function GetBlendColor(Basecolor: TColor; Blendcolor: TColor; BlendIntensity: Byte=127): TColor;
type TMyColor = record red: Byte; green: Byte; blue: Byte; end; var LF1, LF2: TMyColor; begin LF1.red := GetRValue(Basecolor); LF1.green := GetGValue(Basecolor); LF1.blue := GetBValue(Basecolor); LF2.red := (LF1.red * (255-BlendIntensity) + GetRValue(Blendcolor) * BlendIntensity) div 255; LF2.green := (LF1.green * (255-BlendIntensity) + GetGValue(Blendcolor) * BlendIntensity) div 255; LF2.blue := (LF1.blue * (255-BlendIntensity) + GetBValue(Blendcolor) * BlendIntensity) div 255; result := rgb(LF2.red, LF2.green, LF2.blue); end; |
Re: jpg mit png verschmelzen
danke dir für das beispiel.
ich werds mir mal reinzeihen und versuchen zu verstehen, wie ich das zum einsatz bringen kann/muss. tom |
Re: jpg mit png verschmelzen
naja, du hast ja 2 bilder die du "mischen" willst, und dann noch das dritte was die Transparenz bestimmt. Um das Pixel fürs neue bild zu bekommen würde das so aussehen
Delphi-Quellcode:
bildneu.canvas.pixels[x,y] := GetBlendColor(bild1.canvas.pixels[x,y], bild2.canvas.pixels[x,y], GetRValue(schwarzweissbild.canvas.pixels[x,y]));
|
Re: jpg mit png verschmelzen
oh, mit so viel support hätte ich jetzt gar nicht gerechnet.
vielen dank tom |
Re: jpg mit png verschmelzen
Hallo nochmals!
Ich habe da wohl was falsch verstanden oder nicht richtig gemacht. Jedenfalls habe ich doch arge Probleme mit der Prozedur des Verschmelzens zweier Bilder.
Delphi-Quellcode:
Das Programm schimpft immer darüber, dass es wohl kein Bitmap wäre, und dass in Bild3 schon was drin sein müsse, um dort malen zu können. Ich verstehe es einfach nicht. Kanns mir einer nochmal erklären was Sir Thornberry mir da an Code überlassen hat!?
procedure TForm1.Button1Click(Sender: TObject);
var i,k,x,y:integer; begin x:=bild1.Width; y:=bild1.Height; for i:=0 to x do begin for k:=0 to y do begin bild3.canvas.pixels[x,y] := GetBlendColor(bild1.canvas.pixels[x,y], bild2.canvas.pixels[x,y], GetRValue(bild2.canvas.pixels[x,y])); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz