Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   was soll das übersetzt heißen? (https://www.delphipraxis.net/172464-soll-das-uebersetzt-heissen.html)

EMS 5. Jan 2013 19:42

AW: was soll das übersetzt heißen?
 
ok jetzt kommts langsam.
Also macht sowas auch nur sin wenn ich ein Pixel aus einem 24BIT bitmap auslesen möchte?

Popov 5. Jan 2013 19:52

AW: was soll das übersetzt heißen?
 
Es muß mindestens 24Bit sein. Erstens weil nur mindestens 24Bit Bitmaps RGB bieten und zweites wenn du bei einer 8Bit (256 Farben) auf Bits über das 8 Bit zugreifst, dann kommt sowieso nur 0 raus. Bei 32Bit braucht man dann sowieso nur die 24Bit.

EMS 5. Jan 2013 19:55

AW: was soll das übersetzt heißen?
 
also würde das Pixel auslesen aus einem jpeg auch nicht gehen?
Oder geht das wenn ich das in ein Delphi image lade?

Popov 5. Jan 2013 20:06

AW: was soll das übersetzt heißen?
 
Jpeg funktioniert etwas anderes als Bitmap. Ich will jetzt nicht auf die Feinheiten eingehen, aber es ist ein verlustbehaftetes Formal und Pixel als solches spielen weniger eine Rolle. Trotzdem, jede Jpeg wird von Windows intern zum anzeigen soweit ich weiß zu Bitmap konvertiert.

Es ist weniger interessant ob Bitmap oder Jpeg, wichtiger ist Canvas. Bitmap hat Canvas, Jpeg soweit ich weiß nicht. Du ließt deine Pixel nicht von der Bitmap, sondern von der Canvas der Bitmap. Canvas ist die Leinwand der Bitmap, und da kann man eben Pixel für Pixel auslesen.

Allerdings ist es kein Problem eine Jpeg in Bitmap zu konvertieren. Ich glaube mit Bitmap.Assign(Jpeg) bist du schon dabei.

mkinzler 5. Jan 2013 20:17

AW: was soll das übersetzt heißen?
 
Ein Jpeg wird beim Laden in ein Image autonatisch in ein Bitmap verwandelt ( alle Formate werden von den Filtern so behandelt)

EMS 5. Jan 2013 20:22

AW: was soll das übersetzt heißen?
 
ok das ist gut dann hab ich das jetzt so verstanden.

jetzt möchte ich ja selber diese Buchstaben in die einzelnen Bits der Pixel schreiben.

wäre das hier richtig?

Delphi-Quellcode:
rneu:=50 and $0000FF;
gneu:=(60 and $00FF00) shr 8;
bneu:=(70 and $FF0000) shr 16;
Aber ich komm jetzt nicht drauf wie ich die dann wieder zu zB. farbe zusammen bekommeß

kann ich da sagen
farbe:=rneu + gneu + bneu;

Wäre das richtig´?

Popov 5. Jan 2013 20:26

AW: was soll das übersetzt heißen?
 
Das Gleiche, nur in die andere Richtung:

Delphi-Quellcode:
farbe:= (bneu shl 16) + (gneu shl 8) + rneu;
...
Edit:

Hier ein einfach Beispiel:

Delphi-Quellcode:
var
  L: LongInt;
  R, G, B: Byte;
begin
  L := ColorToRGB(Farbe); //macht aus Delphi-Color RGB-Color, konvertiert also auch clRed in rot

  R := Byte(L);
  G := Byte(L shr 8);
  B := Byte(L shr 16);

  //mach was mit den einzelnen R, G und B Bytes und dann wieder zusammensetzten

  Farbe := (B shl 16) + (G shl 8) + R;
end;

EMS 5. Jan 2013 20:31

AW: was soll das übersetzt heißen?
 
Ich hab jetzt das stehen

Delphi-Quellcode:
     rneu:=50 and $0000FF;
     gneu:=(60 and $00FF00);
     bneu:=(70 and $FF0000);


     Neues_Pixel:=(bneu shl 16) + (gneu shl 8)+ rneu;
Der Integer von diesem Pixel ist 50 müsste da nicht auch was 8 Stelliges raus kommen?

EMS 5. Jan 2013 20:36

AW: was soll das übersetzt heißen?
 
jetzt klappts so wie ich gerne wollte

Delphi-Quellcode:
     rneu:=0;
     gneu:=250;
     bneu:=0;
     Neues_Pixel:=(bneu shl 16) + (gneu shl 8)+ rneu;

Furtbichler 5. Jan 2013 20:41

AW: was soll das übersetzt heißen?
 
Geht auch so:
Delphi-Quellcode:
MyColor := RGB(RotAnteil,GelbAnteil,BlauAnteil);
RGB ist in der Unit Windows deklariert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Seite 2 von 5     12 34     Letzte »    

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