AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi jpg mit png verschmelzen
Thema durchsuchen
Ansicht
Themen-Optionen

jpg mit png verschmelzen

Offene Frage von "torud"
Ein Thema von torud · begonnen am 22. Jan 2005 · letzter Beitrag vom 29. Jan 2005
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

jpg mit png verschmelzen

  Alt 22. Jan 2005, 13:24
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
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 13:39
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:01
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?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:25
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:31
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...
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:39
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:
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;
Bei blendintensity gibst du den schwarzweiß-wert des pixels an und für die anderen beiden Farben eben die Farben die gemischt werden sollen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:45
danke dir für das beispiel.
ich werds mir mal reinzeihen und versuchen zu verstehen, wie ich das zum einsatz bringen kann/muss.

tom
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:48
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
  bildneu.canvas.pixels[x,y] := GetBlendColor(bild1.canvas.pixels[x,y], bild2.canvas.pixels[x,y], GetRValue(schwarzweissbild.canvas.pixels[x,y]));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#9

Re: jpg mit png verschmelzen

  Alt 22. Jan 2005, 14:52
oh, mit so viel support hätte ich jetzt gar nicht gerechnet.
vielen dank
tom
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#10

Re: jpg mit png verschmelzen

  Alt 29. Jan 2005, 11:28
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:
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;
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!?
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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