![]() |
Get Pixels
Hallo,
kann mir einer verraten wie ich das von Flash in Delphi übersetzen kann?
Code:
Momentan mache ich das so:
function handleLoadComplete(event:Event) : void {
var ba:ByteArray; var event:* = event; ba = event.target.content.bitmapData.getPixels(new Rectangle(0, 0, 30, 23));
Delphi-Quellcode:
Aber wenn ich versuche aus dem Array einen sha256 hash zu erstellen kommt ein falscher Wert raus.
var
a: array [0..689] of Byte; ... for I := 0 to 23 - 1 do begin for N := 0 to 30 - 1 do begin a[I*N]:=GetPixel(Form1.Image1.Picture.Bitmap.Handle, N, I); end; end; |
AW: Get Pixels
Warum i*n ?
Ich nehme mal an, du willst die einzelnen Pixel durchnummerieren. Wenn du aber mit i*n rechnest, überschreibst du immer wieder mal alte Werte (0*0 = 0*1 = 0*2 = ...) Die Formel müsste also passend geändert werden |
AW: Get Pixels
Ahhhh stimmt, werde ich sofort ändern.
Ist das denn sonst so richtig? |
AW: Get Pixels
Delphi-Quellcode:
so in der Richtung müsste es gehen
dc := GetDC(0);
farbe:=GetPixel(dc,x,y); ReleaseDC(0, dc); |
AW: Get Pixels
Zitat:
(jenachdem wie das Bild kodiert ist) Man müßte also mal wissen was getPixels macht, bzw. in welchem Format es die Rohdaten der Pixel liefert und vorallem wieviele Bytes es zurückgibt. |
AW: Get Pixels
Also es ist ein PNG Bild mit 32 Bit.
Ich vermute mal, dass die Flash Version den Alphachannel mit ausliest. Aber wie geht das in Flash, werden da die Daten hintereinander eingelesen? ALso etwa so? Byte[0]=Rotwert Pixel 1 Byte[1]=Grün Pixel 1 Byte[2]=Blau Pixel 1 Byte[3]=Alpha Pixel 1 Byte[4]=Rot Pixel 2 Byte[5]=Grün Pixel 2 ... |
AW: Get Pixels
Ich wollte mal pushen, vielleicht kann mir ja noch einer helfen. Das Thema ist immernoch aktuell.
|
AW: Get Pixels
Delphi-Quellcode:
...?
var
p: PByte; a: array [0..689] of Byte; with Form1.Image1.Picture.Bitmap do p := Scanline[Height-1]; for i := 0 to 689 do begin a[i] := p^; inc( p ); end; |
AW: Get Pixels
Die Reihenfolgen der Kanäle werden recht unterschiedlich gebraucht. Üblich sind ARGB, RGBA, ABGR und BGRA, wobei durch Endianess+Wortbreite dann noch quasi praktisch jede andere Kombination auftauchen könnte. Wenn du an die Flashquellen nicht ran kommst, hilft fast nur noch ausprobieren und Ergebnisse vergleichen. Ich weiss auch grad nicht aus dem Kopf, in wie weit PNG da variabel ist, wobei eben auch wenn man das wüsste, nicht gesichert ist, dass ein Loader da nicht wieder eine Neuordnung vornimmt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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