AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RGB zu Alpha

Ein Thema von EWeiss · begonnen am 17. Aug 2018 · letzter Beitrag vom 21. Aug 2018
Antwort Antwort
Seite 3 von 4     123 4      
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#21

AW: RGB zu Alpha

  Alt 21. Aug 2018, 00:30
[QUOTE=EWeiss;1411152]
Zitat:
Zitat:
Nur ist es bei dir fehlerhaft programmiert.
Quatsch..

gruss
Noch ein Versuch.

Mach mal
ShowMessage(IntToStr(Rgb2Alpha($FFFFB1))); // Rgb2Alpha ist die in #1 gezeigte Funktion.
Und dann
ShowMessage(IntToStr(Rgb2Alpha(0)));

Bei mir kommt da in beiden Fällen 0 heraus.
Und nun erklär mit mal, warum Deine "Rgb2Alpha" bei $FFFFB1 (ein sehr helles Cyan) und bei 0 (Schwarz) den gleichen Wert zurückgibt.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

AW: RGB zu Alpha

  Alt 21. Aug 2018, 00:55
Zitat:
Und nun erklär mit mal, warum Deine "Rgb2Alpha" bei $FFFFB1 (ein sehr helles Cyan) und bei 0 (Schwarz) den gleichen Wert zurückgibt.
Ich berechnet die Luminanz eines Pixels. (Wie einige Leute hier schon erkannt haben)
Lese dir das doch einfach nochmal durch
Und erkenne um was es dabei geht.

Das Thema ist jetzt wirklich beendet für mich.
Aber ihr könnt gerne weiter diskutieren.

gruss

Geändert von EWeiss (21. Aug 2018 um 01:09 Uhr)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: RGB zu Alpha

  Alt 21. Aug 2018, 01:30
Hallo AW,

doch noch rasch:

Apro hat schon Recht; deine Funktion berechnet den Luminanz Wert für die meisten der 256^3 möglichen RGB Werte nicht korrekt.

Sehr einfach kannst du es testen, indem du mit deiner Funktion die Luminanz-Werte von RGB(grau,grau,grau) für grau=0 bis 255 berechnest.

Welche Werte sollte deine Funktion liefern?
In
E'Y = 0,299 E'R + 0,587 E'G + 0,114 E'B
eingesetzt ergibt sich
Y(grau) = 0,299*grau + 0,587*grau + 0,114*grau = grau = id


Deine Funktion liefert jedoch meistens andere Werte (weil du nicht wie Apro dir vorschlägt das jeweilige Farbbyte mittels "and $ff" separierst):

Delphi-Quellcode:
procedure TForm71.Button1Click(Sender: TObject);
var w, grau : byte;
    s : string;
begin
  s := '';
  for grau := 0 to 255 do
  begin
    w := Rgb2Alpha2( RGB( grau, grau, grau ) );
    s := s + w.ToString + ', ';
  end;

  showmessage( s );
end;
Michael Gasser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#24

AW: RGB zu Alpha

  Alt 21. Aug 2018, 03:57
Zitat:
Apro hat schon Recht; deine Funktion berechnet den Luminanz Wert für die meisten der 256^3 möglichen RGB Werte nicht korrekt.
OK.. @Amateurprofi Danke! und entschuldige.
Werde "and $FF" addieren damit sollte das Problem beseitigt sein.

Dachte eigentlich das ich mir das $FF durch das LOBYTE ersparen konnte.
Wenn dem nicht so ist gut dann habe ich wieder was gelernt.
Aufgrund dieser Annahme bin ich davon ausgegangen das meine Berechnung korrekt war. (Nun gut Danke man ist nicht perfekt )

PS:
Sichtbare unterschiede kann ich jedoch nicht ausmachen, zwischen deiner und meiner vorherigen Berechnung.
Egal welche zwischen Werte am ende bei der Berechnung umhinkommen am ende zählt doch nur ob das Ergebnis 0 ist um die schwarzen Pixel zu entfernen.
Alle anderen Farbigen Pixel bleiben erhalten.

Das einzige Problem das ich nun noch habe ist das bei 16Farbigen Icons schwarz komplett entfernt wird.
Siehe shot!

gruss

Geändert von EWeiss (11. Jul 2019 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#25

AW: RGB zu Alpha

  Alt 21. Aug 2018, 08:59
LOBYTE kannst du schon nehmen, allerdings wirkt es in deiner Formel zu spät.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#26

AW: RGB zu Alpha

  Alt 21. Aug 2018, 09:06
LOBYTE kannst du schon nehmen, allerdings wirkt es in deiner Formel zu spät.
Ok wüsste jetzt zwar nicht warum aber habe es ja jetzt mit and $FF korrigiert Danke

gruss
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#27

AW: RGB zu Alpha

  Alt 21. Aug 2018, 09:21
Dein Original
Delphi-Quellcode:
Result := LOBYTE(round(colrRGB * 0.2989)) +
          LOBYTE(round((colrRGB shr 8) * 0.5870)) +
          LOBYTE(round((colrRGB shr 16) * 0.114));
müsste eigentlich so aussehen
Delphi-Quellcode:
Result := round(LOBYTE(colrRGB) * 0.2989) +
          round(LOBYTE(colrRGB shr 8) * 0.5870) +
          round(LOBYTE(colrRGB shr 16) * 0.114);
Und wenn wir schon dabei sind:
Code:
19595 => 0.2989 * 65536
38470 => 0.5870 * 65536
 7471 => 0.1440 * 65536
Wo ist also der Unterschied ob ich die Luminanz mit
Code:
l = 0.2989 * r + 0.5870 * g + 0.1440 * b
berechne oder mit
Code:
l = ( 19595 * r + 38470 * g + 7471 * b ) / 65536
Genau, es gibt keinen Unterschied, beide Formeln berechnen exakt das Gleiche.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#28

AW: RGB zu Alpha

  Alt 21. Aug 2018, 09:32
Zitat:
Genau, es gibt keinen Unterschied, beide Formeln berechnen exakt das Gleiche.
Dann kann ich mir das round ersparen werde das später korrigieren.
Danke.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: RGB zu Alpha

  Alt 21. Aug 2018, 09:56
Was ich mich die ganze Zeit frage, reicht es nicht aus clFuchsia als Transparent Farbe zu setzen für Icons?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#30

AW: RGB zu Alpha

  Alt 21. Aug 2018, 10:17
Was ich mich die ganze Zeit frage, reicht es nicht aus clFuchsia als Transparent Farbe zu setzen für Icons?
Hä?
Systemweit?
Ich muss die Farbe nehmen die vom Icon übergeben wird nicht eine die ich mir wünsche.
Kann den Leuten doch nicht diktieren mit welcher Hintergrundfarbe die ihre Icons zeichnen die sind nun mal so

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 19:25 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