Bild aus einem string laden

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: Bild aus einem string laden

BeitragMi, Sep 25, 2019 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß es klingt nun bissel nach einem fail.
aber ich lade ein bild mit der libcurlssl ein und soweit ich weiß kann ich nur text also einen string bekommen.
wenn ich das was ich bekomme nun einfach speichere mit writeline kann ich das bild laden einfach mit loadimage. funktioniert 1a. nur möchte ich das lokale speichern auf dem rechner vermeiden, daher die frage wie kann ich es realisieren ein string umzuwandeln in bytes so das ich es dann einlesen kann.

edit:
die libcurl lädt das bild so als ob ihr euch eine png im editor anschaut. und dieser text den habe ich in einem string und würd gern wissen wie man das am besten laden kann. ohne voriges abspeichern.
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Thunder

BeitragMi, Sep 25, 2019 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube du kannst dem LoadImage oder dem LoadPixmap einen TStream geben. In dem Fall ist wahrscheinlich der TRamStream aus brl.ramstream interessant.
Erstellen kannst du einen RAM Stream aus einem Byte Ptr (Anfang der Daten) und einem Long (Länge der Daten) mit CreateRAMStream().
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Mathias-Kwiatkowski

BeitragSa, Sep 28, 2019 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß nicht wie ich das umsetzen soll

Hier wäre mein PNG das komplett in einem string genauso steht.

Code: [AUSKLAPPEN]
‰PNG

   
IHDR   
   $   RH°‚   sRGB ®Îé   gAMA  ± üa      pHYs    Â(J€  IDATHK•TKkSAžHK#
°`@Ñ‚©v!âÈ¢HÅ.ªvá£uá
>(¥*Å¢’…‹ŠûRQPð±tU7"ˆ––ºéÃB´)"5É}ß&iÒÏ3÷Î\'i¬õÀ—™óóÝ3çÌ@¢›Q|œ?'}ŸÌdF‘^t éóäÇdP Šln
¿2Eä´‡ä×qr –]DÓv ïJšö¸V!ˆA×1xc‘­ Ñ2q·x †ñ ã–8qºÓÔˆï†eåÐ{©ìñco ò_ó|yFÕîbvÎBlÐvЍŽ÷P7$˜˜4àº#2÷ˆ£XìGꛁæ=@x °c7°6aZI5oS­TʲHc= ‡}?ÜÀX¹ V.9>!,ø‚®_§*Ž÷õÄA¿i~L~Ü™Y›ú–¹¾ “}€É)ÛKè8Z¢“ø>o|0¼¯Oãt%Úcâ½APFÝæOÎq2ÄÉ‘·z#ï¿ZTF>ÀuÞøåšæùÍB #~Ó3U~I¾2r^qíkàψÇ=_Þ᧿­i¶X«îé/°¡¿pa®XÈoo]PrrÓÎI4a   i—¸¡š‰
: dœ34›û(çᦉ‹ÖJ”ˆçá؃hÃÚQDÞ!nÉ„° ë­ò~"ŒÔ(úʼ
‘ßO—ˆy¢¨‰ìÔ{<Ï“¿„5þî-žºhÒ?0o—°r[
¤¨wvá<⸆
X.¦ðÅ=‚0>â•]€;¦
¤ˆQà,U³/Б/ã z莟"Y žR_ó¿¡:Ô‡Í«%ÑÉ+ò£Æ•x€j"AP£Ê¼ñŽªX€Z$ŸàÅ*®!þó¿<Ø ˱Ðaáz–f¡Íœ×Xh¿ |“%³`«9°¯ÒÜ)â@¸£ò•,´
uÛu-Qö†Üþu¼š£­Q©bë)VŶÂ%LÓRo²P‹ÏxÁ¸Ø.ŠÕ7e¼Ãb¼Ÿ   ý„›Âw—ÀZÔ‘J¸'%>è`íjG…ãƒ5üÛKkãÚØo!S-aÆ<™    IEND®B`‚



und naja habe nun eigentlich keine ahnung wie ich weiter vorgehen soll.

habe etwas experimentiert, aber ohne erfolg und komm nich so ganz dahinter wie ich das im tstream bzw ramstream übergebe und dann als image laden kann mittels loadimage
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

sinjin

BeitragSa, Feb 22, 2020 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe "fast" ne Lösung, weil ein Zeichen in einem String sind intern immer 2 bytes, aber ich habe folgendes, evtl hilft dir das weiter:
Code: [AUSKLAPPEN]
function loaddimension(url$,w% var,h% var)
  function readfunc%(buf@ptr,size%,nmemb%,src:object)
    local n%=tstream(src).readbytes(buf,size*nmemb)
    return n/size
  endfunction

  local f:tstream=readfile(url)
  select lower(trimext(url))
  case "bmp"
    seekstream f,$12
    w=readshort(f)
    seekstream f,$16
    h=readshort(f)

  case "tga"
    seekstream f,$c
    w=readshort(f)
    h=readshort(f)
   
  case "jpg"
    local depth%,pix:byte ptr
    local res%=loadjpg(f,readfunc,w,h,depth,pix)

  case "png"
    seekstream f,$12
    local b:byte ptr=varptr(w)
    b[1]=readbyte(f)
    b[0]=readbyte(f)
    seekstream f,$16
    b=varptr(h)
    b[1]=readbyte(f)
    b[0]=readbyte(f)
  endselect
  closefile f
endfunction

local str:byte ptr
str=loadbytearray("D:\BlitzMax\x1.png")

local pic:timage
local w%,h%
loaddimension "D:\BlitzMax\x1.png",w,h
print w+":"+h
pic=createimage(w,h)

local f:tramstream=createramstream(str,w*h,true,false)
pic.pixmaps[0]=loadpixmappng(f)
closestream f
...
drawimage pic

Wenn dur nur PNG brauchst, kannst W und H ja auch aus der Zeichenkette lesen Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group