PNG Dateien unter Lazarus ohne OpBitmap
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
PNG Dateien unter Lazarus ohne OpBitmap
Hallo,
da ich gerne Andorra verwenden möchte, und die Grafiken als PNG vorliegen kann ich OpBitmap leider nicht verwenden.
Daher habe ich es mit "DevIL Header" versucht http://openil.sourceforge.net/" onclick="window.open(this.href);return false;
aber leider weiß ich nicht wie ich aus der einen Pas Datei eine SO Datei für Linux erzeugen kann.
Ich habe es über apt-get installiert, aber anscheind wurden hier auch keine entsprechenden Libs erzeugt.
Dann habe ich das noch mit "FreeImage Header"
http://freeimage.sourceforge.net/" onclick="window.open(this.href);return false;
Hier das gleiche Ergebnis
Der Kompiler findet einfach keine entsprechende LIBS.
Ich würde ja sonst einfach OpBitmap einbinden, habe ich auch schon versucht, aber das gleiche.
Sonst müsste ich die Grafiken umwandeln nach BMP.... Bis ich eine andere Lösung gefunden habe.
ich habe auch versucht die png Datei einzubinden, aber leider ohne erfolgt.
Ich vermute es auch nur das es an den PNG Bildern liegt. Da er genau da abricht wo die Image List geladen wird.
Das ist nur eine Zeile. Meine Narchforschungen habe ergeben das die ImageList Datei zwar geladen wird,
die Anzahl der Grafiken wird auch richtig ausgelesen, aber dann bricht er bei der ersten Grafik schon ab.
mit der Fehler Meldung Division durch 0.
Ich nehme mal, wie gesagt das es an den PNG Grafiken liegt, weil mit BMP Dateien hatte ich bisher noch keine Probleme.
PS: Ich mache aber trotzdem schon Fortschritte mit Andorra. Für 2D Spiele ist die Andorra gar nicht mal so schlecht. Und kann auch wesentlich mehr als DelphiX. Unter Linux wird einfach OpenGL verwenden und ab der nächsten Version auch SDL. Unter Windows kann dann noch DirectX verwendet werden.
Einige Probleme konnte ich schon lösen damit.
da ich gerne Andorra verwenden möchte, und die Grafiken als PNG vorliegen kann ich OpBitmap leider nicht verwenden.
Daher habe ich es mit "DevIL Header" versucht http://openil.sourceforge.net/" onclick="window.open(this.href);return false;
aber leider weiß ich nicht wie ich aus der einen Pas Datei eine SO Datei für Linux erzeugen kann.
Ich habe es über apt-get installiert, aber anscheind wurden hier auch keine entsprechenden Libs erzeugt.
Dann habe ich das noch mit "FreeImage Header"
http://freeimage.sourceforge.net/" onclick="window.open(this.href);return false;
Hier das gleiche Ergebnis
Der Kompiler findet einfach keine entsprechende LIBS.
Ich würde ja sonst einfach OpBitmap einbinden, habe ich auch schon versucht, aber das gleiche.
Sonst müsste ich die Grafiken umwandeln nach BMP.... Bis ich eine andere Lösung gefunden habe.
ich habe auch versucht die png Datei einzubinden, aber leider ohne erfolgt.
Ich vermute es auch nur das es an den PNG Bildern liegt. Da er genau da abricht wo die Image List geladen wird.
Das ist nur eine Zeile. Meine Narchforschungen habe ergeben das die ImageList Datei zwar geladen wird,
die Anzahl der Grafiken wird auch richtig ausgelesen, aber dann bricht er bei der ersten Grafik schon ab.
mit der Fehler Meldung Division durch 0.
Ich nehme mal, wie gesagt das es an den PNG Grafiken liegt, weil mit BMP Dateien hatte ich bisher noch keine Probleme.
PS: Ich mache aber trotzdem schon Fortschritte mit Andorra. Für 2D Spiele ist die Andorra gar nicht mal so schlecht. Und kann auch wesentlich mehr als DelphiX. Unter Linux wird einfach OpenGL verwenden und ab der nächsten Version auch SDL. Unter Windows kann dann noch DirectX verwendet werden.
Einige Probleme konnte ich schon lösen damit.
MFG
Michael Springwald
Michael Springwald
Re: PNG Dateien unter Lazarus ohne OpBitmap
Wieso nicht? Bzw. die LCL kann doch auch PNG lesen. Was ist denn damit?pluto hat geschrieben:Hallo,
da ich gerne Andorra verwenden möchte, und die Grafiken als PNG vorliegen kann ich OpBitmap leider nicht verwenden.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ich weiß es nicht, wie gesagt es ist nur eine Vermutung.
Welche Dateien muss ich denn für PNG einbinden ? Evlt. liegt ich auch mit meiner Annahme daneben. Aber bisher deuten viele hinweise darauf.
Gibt es von PNG evlt. mehre Versionen ? wie bei BMP ?
Wenn ja, währe es möglich das die LCL nicht alle Versionen lesen kann ?
Welche Dateien muss ich denn für PNG einbinden ? Evlt. liegt ich auch mit meiner Annahme daneben. Aber bisher deuten viele hinweise darauf.
Gibt es von PNG evlt. mehre Versionen ? wie bei BMP ?
Wenn ja, währe es möglich das die LCL nicht alle Versionen lesen kann ?
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Was ist seltsamen finde ist das die Farbtiefe falsch ausgelesen wird von Andorra:
71 wird ausgelesen, aber die Farbtiefe steht auf 32. Aber das anscheind nicht der Fehler.
Code: Alles auswählen
procedure TAdTexture.LoadFromStream(AStream: TStream);
var c:char;
bmp:TAdBitmap;
begin
AStream.Read(c,1);
if c = 'T' then
begin
bmp := TAdBitmap.Create;
try
bmp.LoadFromStream(AStream);
AStream.Read(FBitDepth,1);
writeln(Assigned(bmp));
Texture.LoadFromBitmap(bmp, FParent.GetTextureParams(BitDepth));
// writeln('TEST');
bmp.Free;
except
bmp.Free;
raise;
end;
end;
end;
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
So ich habe ein klein Test gemacht, es liegt anscheind doch nicht an den PNG Bildern sondern an dieser Zeile
SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
Das laden so geht:
Also muss es an der Bilder liste Liegen. Aber ich habe auch schon nachgeforscht und nix gefunden.
Außer halt das die Farbtiefe Falsch ausgelesen wird.
Also ligt es nur an der
//SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
und NICHT an den PNG Bildern.
SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
Das laden so geht:
Code: Alles auswählen
procedure LoadTex;
begin
with SharedImageList.Add('0') do
Texture.LoadGraphicFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex2/5.png');
//SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
end;
Außer halt das die Farbtiefe Falsch ausgelesen wird.
Also ligt es nur an der
//SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
und NICHT an den PNG Bildern.
MFG
Michael Springwald
Michael Springwald
Also ich kenne TADBitmap nicht, aber wie kommst du drauf, dass du damitpluto hat geschrieben:ja, davor hatte ich das mit der Farbtiefe gemacht. So wollte ich nur sicher gehen, das BMP nicht gleich nil ist.
bmp.LoadFromStream(AStream);
AStream.Read(FBitDepth,1);
Irgenwas über die BitDepth erfährst?
Mal angenommen, dieser Wert wäre tatsächlich in Byte 1 des Streams den du einliest (was ich sehr bezweifle), dann müsstest du die Stream Postition zuerst auf 0 setzen.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ich kenne dieses Format nicht. Das ist das Imagelist Format von Andorra. Eine Grafikk Engine.
Ganze einfach das FBitDepth kling für mich wie die Farbtiefe. darum.
Aber die Farbtiefe ist egal. Das ist wie gesagt nicht der Fehler. Ich habe mal Testweisee die FBitDepth manuell auf 32 gesetzt, aber der Fehler kommt immer noch.
Das Manuelle Laden geht. Wie gesagt. Es ist eindeutig ein Fehler in der Imagelist-Verwaltung. Bzw. beim Laden einer Imagelist Datei.
Das sind Dateien die viele Grafiken beinhalten können, so eine art Grafik Archiv.
Wie gesagt, das stammt nicht von mir. Ich versuche nur den Fehler zu verstehen.
Ganze einfach das FBitDepth kling für mich wie die Farbtiefe. darum.
Aber die Farbtiefe ist egal. Das ist wie gesagt nicht der Fehler. Ich habe mal Testweisee die FBitDepth manuell auf 32 gesetzt, aber der Fehler kommt immer noch.
Das Manuelle Laden geht. Wie gesagt. Es ist eindeutig ein Fehler in der Imagelist-Verwaltung. Bzw. beim Laden einer Imagelist Datei.
Das sind Dateien die viele Grafiken beinhalten können, so eine art Grafik Archiv.
Wie gesagt, das stammt nicht von mir. Ich versuche nur den Fehler zu verstehen.
MFG
Michael Springwald
Michael Springwald