TGAs auslesen
Übersicht

![]() |
StarGazerBetreff: TGAs auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
hat jemand von euch schon ein TGA Loader geschrieben ?, also ohne LOADIMAGE. Ich habe danach gesucht, aber nicht passendes gefunden. BMP kann ich zwar auslesen, aber BMP besitzt kein Alpha. ( selbst es wenn es BMPs mit Alpha geben sollte, mein Grafikprogramm kann solche jedenfalls nicht speichern, dacher möchte ich TGAs auslesen können ). hoffe jemand kann mir helfen. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ist mit PNG? Das hat super Qualität, einen Alpha-Kanal und ist kleiner als BMP. Damit sollten die meisten Grafikprogramme eigentlich klar kommen.
Aber ein TGA-Loader wär trotzdem nicht schlecht ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nö hat sich kaum jemand geschrieben, würde keinen sinn machen:
FreeImage Library hat das drin |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte nur zu Übungszwecken (sprich so einen Loader zu Programmieren wär trotzdem nicht schlecht) ![]() |
||
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
PNG oder TGA beides wäre mir ok ![]() Eigentlich will ich nur die Dateien dann in ein eigenes Format abspeichern. Da ist mir eingefallen das man sie vielleicht doch mit LOADIMAGE lesen könnte, aber man müste die Daten irgenwie aus dem Speicher lesen, die BildRBGPixel und die AlphaWerte. Kann man denn irgenwie die Daten aus einem geladen Bild das im Speicher liegt auslesen ? Eigentlich aus einer geladenen Texture (LoadTexture), da in Blitz2D es wohl keine AlphaWerte gibt, dacher lieber die RGB und Alpha-Daten aus einer Textur auslesen die gerade im Speicher liegt. Aber dann gehört dieses Thema wohl eher in den 3D Bereich. |
||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
ImageBuffer() und ReadPixelfast()
Du meinst mit Daten doch die Pixel, oder? |
||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, die RGB Werte halt ![]() ich habe dafür was du meinst eine Funktion hier im Forum gefunden Code: [AUSKLAPPEN] LockBuffer( ImageBuffer( image ) ) SetBuffer ( ImageBuffer( image ) ) rgb = ReadPixelFast( x, y ) r = ( rgb Shr 16 ) And $ff g = ( rgb Shr 8 ) And $ff b = rgb And $ff doch "ReadPixel" liest nur die RGB Werte aus, wie bekommt denn da die AlphaWerte herraus ? (zudem verstehe ich nicht was das "And $ff" bedeuten soll, das kenne ich leider nicht) können denn in BB2D die Bilder überhaupt AplhaWerte besitzen ?, dacher auch die Frage ob man das nicht aus einer Textur herrauslesen könnte ? |
||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.blitzbase.de/befehl...elfast.htm
Den Link habe ich oben schon gepostet gehabt! Guck dir das mal an! Da gibts auch ein Beispiel zu dem Befehl! Die Onlinehilfe hat Folgendes geschrieben: BlitzBasic: [AUSKLAPPEN]
;Berechnung der Farbanteile aus einem Farbcode: Und das Dollar vor den Variablen in deinem Beispiel heißt, das der folgende Wert Hexadezimal ist. Das $ff ist das gleiche wie der Dezimalwert 255! ~EDIT~ Hmm, das Beispiel von dir müsste etwas schneller sein. So müsste es mit Alpha aussehen, glaub ich: BlitzBasic: [AUSKLAPPEN] rgb = ReadPixelFast( x, y ) Ich garantiere für nichts ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: zudem verstehe ich nicht was das "And $ff" bedeuten soll, das kenne ich leider nicht
Das ist eine Bitmaske, die dafür sorgt dass nur gewisse Bits beachtet und die anderen einfach ignoriert werden. Code: [AUSKLAPPEN] argb = ReadPixelFast(x, y)
;argb ist nun z.B. hexadezimal gesehen $AARRGGBB (= 1 Int = 4 Bytes) ;$AARRGGBB And $FF000000 -> $AA000000 (nur die ersten 8 bits, Alpha) ;$AARRGGBB And $00FF0000 -> $00RR0000 (nur die zweiten 8 bits, Rot) ;Nur sind die einzelnen Werte jetzt noch an der falschen Stelle. ;Um den Rot-Wert zu bekommen bringt $00RR0000 nicht viel, ;es müsste $000000RR heissen. Also schiebt man die Stelle einfach nach; ;Rechts mit shr (shift right). rot = (argb shr 16) ; -> $000000RR (um 2 * 8 = 16 bits verschoben) R und G gibts natürlich hexadezimal nicht, war nur ein Beispiel ![]() |
||
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super ich danke euch ![]() ![]() jetzt würde ich nur gern festellen ob der Alphawert wirklich gespeichert wurde, dafür erstelle ich eine Texture und lade die Daten wieder ein (ich will das auch für Texturen benutzen) Code: [AUSKLAPPEN] tex = CreateTexture( width, height, 2 )
LockBuffer(TextureBuffer( tex ) ) SetBuffer (TextureBuffer( tex ) ) Cls a = ReadByte( file ) r = ReadByte( file ) g = ReadByte( file ) b = ReadByte( file ) alpha = ( a Shl 24 ) rgb = ( r Shl 16 ) Or ( g Shl 8 ) Or b WritePixelFast( x, y, rgb ) ; was ist denn WritePixelFast x,y,rgb, TextureBuffer(tex) ; von den beiden besser ? UnlockBuffer(TextureBuffer( tex ) ) mit WritePixel kann man in die Texture reinschreiben, das funktioniert auch, man sieht auch die Texture ![]() PS: Ich weis, das sollte jetzt eigentlich eher in den 3D Bereich, aber ich hab ja mit TGA auslesen angefangen, und nun hat sch das weiter entwickelt, SORRY. Deshalb jetzt extra im 3D Bereich ein neues Thema aufmachen ?!. |
||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nee, ist nicht schlimm, wenn du es hier belässt. Wenn die Mods was dagegen haben, verschieben sie das schon in das passende Forum, also B3D, oder eher noch Allgemein. Naja, eigentlich gehörts ja doch in die Beginners-Corner, hmmm.... ![]() ![]() Du du jeden Pixel umwandelst, um ihn später wieder zurückzuwandeln, gebe ich dir den kleinen Tipp, die Pixel direkt als Integer abzuspeichern... ~EDIT~ Code: [AUSKLAPPEN] tex = CreateTexture( width, height, 2 )
LockBuffer(TextureBuffer( tex ) ) SetBuffer (TextureBuffer( tex ) ) Cls a = ReadByte( file ) r = ReadByte( file ) g = ReadByte( file ) b = ReadByte( file ) argb = ( a Shl 24 ) Or( r Shl 16 ) Or ( g Shl 8 ) Or b WritePixelFast x,y,argb UnlockBuffer(TextureBuffer( tex ) ) |
||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
DANKE DIR ![]() das funktioniert jetzt wie erhofft super ![]() zuerst wollte es jedoch nicht, weil anscheinend in BB2D mit"LoadImage" die Bilder im Speicher nicht mit Alpha abgelegt sind. Dann habe ich es mit "LoadTexture" versucht, und dann ging es, FREU, nur nicht vergessen die Textur als AlphaMode "2" herreinzuladen sonst klappt es trotzdem nicht ![]() |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
um nochmal fix Bezug zum Thema zu nehmen:
https://www.blitzforum.de/foru...6056#66056 TGAs laden und speichern. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group