Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 04:49

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: PNG aus RAM laden
BeitragVerfasst: Di Apr 19, 2011 23:26 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Hallo,
ich suche eine Möglichkeit eine PNG-Datei zu laden, wobei ich die rohen Daten selbst aus der Datei laden möchte. Ich habe also einen Speicherbereich im RAM, in dem die Daten stehen, die normalerweise in der PNG-Datei wären. Das braucht man z.B. dann, wenn man die Dateien aus einem FileContainer, übers Netzwerk oder verschlüsselt erhalten hat.

Ich habe mir schon libpng und SDL_image angesehen, finde da aber keine Funktion für. Falls ich was übersehen habe, stoßt mich bitte mit der Nase drauf. :wink:

Bin dankbar für jeden Tipp.


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 21:31, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PNG aus RAM laden
BeitragVerfasst: Di Apr 19, 2011 23:54 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
IMG_LoadPNG_RW nimmt einen SDL_RWOP.
Der lässt sich wiederum aus einem Speicherbereich erzeugen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PNG aus RAM laden
BeitragVerfasst: Mi Apr 20, 2011 00:21 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Danke für die schnelle Antwort, damit hatte ich so spät gar nicht gerechnet.

Also in Code ausgedrückt heißt das dann wohl:
Code:
  1. SDL_Surface* pSurface;
  2. char* pBuf = new char[size];
  3. // pBuf mit PNG-Daten füllen...
  4.  
  5. SDL_RWops* rw = SDL_RWFromMem(pBuf, size);
  6. pSurface = IMG_LoadPNG_RW(rw);
  7.  


Ausprobieren kann ich's gerade noch nicht, denn dazu muss ich erstmal SDL bei mir einrichten. ;)

Gute Nacht!


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 21:31, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PNG aus RAM laden
BeitragVerfasst: Mi Apr 20, 2011 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

mit der libPNG funktioniert das zumindest in C++ ziemlich problemlos.
Du kannst via png_set_read_fn eine callback funktion angeben welche zum laden der daten aufgerufen wird.

Sie bekommt immer einen pointer und eine größe übergeben, den pointer mußt du dann mit den daten aus dem stream füllen.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PNG aus RAM laden
BeitragVerfasst: Mi Apr 20, 2011 20:04 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab png laden über die callbacks eingebaut, damit ich über ein datenstream gehen kann, also gleiches Behavior.
http://hudson.radonframework.org/job/RadonFramework_Trunk/ws/backend/libpng/PNGImageLoader.cpp/*view*/

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PNG aus RAM laden
BeitragVerfasst: Mi Apr 20, 2011 22:12 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Danke ihr beiden, ich werd darauf zurück kommen, wenn ich mich doch noch gegen die SDL entscheiden sollte. Bisher bin ich mit ihr aber ganz zufrieden. :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]