Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Alphakanal auslesen mit Peek

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 08.03.2010, 18:59    Titel: Alphakanal auslesen mit Peek Antworten mit Zitat

Hallo , wie kann man den Alphakanl auslesen vom Png-Bild, welches in einem Imagecreate-Image reingepackt wurde.
In Freebasic werden ja für ein Bildpixel 4-Byte abgelegt.

Nun möchte ich wissen, ob unter dem Pixel x/y rgb(255,0,0) vom Png-Image der Alphapixel schwarz oder weiss ist.

Und wie kann man einen Alphakanal anfertigen bzw in einem Imagecreate-Image reinpoken als 4. Bytes?


Wie geht da?

Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 08.03.2010, 19:54    Titel: Antworten mit Zitat

Alphakanal auslesen sollte eigentlich mit COLOR als Funktion gehen, habe ich aber nicht getestet. An sich würde ich erwarten, dass man ebenso mit COLOR zusätzlich den Alphakanal setzen kann; in der deutschen Referenz steht allerdings nichts dazu. Also einfach mal testen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 08.03.2010, 20:03    Titel: Antworten mit Zitat

Wie bohre ich ein Loch mit einer Säge?

Wie geht dem?

Grus.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 08.03.2010, 20:39    Titel: Antworten mit Zitat

Ich möchte den 4. Kanal überprüfen ob er gesetzt (0/1) ist , bei einer bestimmten x/y-Position und dann prüfen ob da sich ein Farbpixel befindet.

Der 4. Kanal soll für eine Pixelcollision herhalten
Das wird wohl mit Color und dem anderen Spektakel zu langsam sein. Wollte es dann mit Peeks probieren.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.03.2010, 03:53    Titel: Antworten mit Zitat

Die einzelnen Werte mit Peek auslesen recht simple, und bevorzuge ich persoenlich selbst um nicht unmengen sinnloser nebenvariablen zu casten

Benoetigen tust du dafuer nur die Vorbedingung, ein 32bit ImageBuffer
die horizontale (X) und die vertikale (Y) und den pitch, der im imageheader steht.

bsp. mit peek auslesen:
Code:
ImagePitch=Peek(UInteger,Image+16))


die adresse des pixels ist dann:
Code:
Image+32+(X*4)+(Y*ImagePitch)


32 wegen des Headers
X*4, da jeder pixel 4 Byte informationen hat

und Y*ImagePitch erklaert sich eigentlich von selbst....

also kann man nun so jeden einzelnen wert auslesen:

Code:

Alpha=Peek(UByte,Image+32+(X*4)+(Y*ImagePitch)+3)
Red=Peek(UByte,Image+32+(X*4)+(Y*ImagePitch)+2)
Green=Peek(UByte,Image+32+(X*4)+(Y*ImagePitch)+1)
Blue=Peek(UByte,Image+32+(X*4)+(Y*ImagePitch)+0)


Mit einer UDT wuerde es noch einfacher gehen...
Code:
Type PixelMap
 Blue as UByte
 Green as UByte
 Red as UByte
 Alpha as UByte
End Type

Peek(PixelMap,Image+32+(X*4)+(Y*ImagePitch))


solltest dir in der referenz auch mal die RGBA Funktion und die Internen Pixelformate ansehen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 09.03.2010, 23:52    Titel: Antworten mit Zitat

Jup, danke.

Lässt sich gut testen.


Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz