Seite 1 von 2

Base64Decoder für Spider?

Verfasst: 02.04.2021 16:48
von stevie1401
Mit diesem Code kann ich mit Purebasic einen Base64-String zurück in ein Image verwandeln.

Code: Alles auswählen


Procedure.i DecodeStringToImage(String.s)
   Protected Image.i, Length.i, *Buffer = AllocateMemory(Len(String)+64) ; Puffergröße muss min. 64 Byte sein.
   Length = Base64Decoder(String, *Buffer, MemorySize(*Buffer))
   Image = CatchImage(#PB_Any, *Buffer, Length)
   FreeMemory(*Buffer)
   ProcedureReturn Image
EndProcedure

Gibt es das auch für Spider?

Ich habe das gefunden:

Code: Alles auswählen



Procedure.s Base64EncodeString(Input.s)
  !  return btoa(encodeURIComponent(v_input).replace(/%([0-9A-F]{2})/g,
  !    function toSolidBytes(match, p1) {
  !      return String.fromCharCode('0x' + p1);
  !  }));
EndProcedure

Procedure.s Base64DecodeString(Input.s)
  !  return decodeURIComponent(atob(v_input).split('').map(function(c) {
  !    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  !  }).join(''));
EndProcedure

Aber da bringt der Base64DecodeString ja auch nur wieder einen String aus.
Hat jemand eine Idee?

Re: Base64Decoder für Spider?

Verfasst: 02.04.2021 18:06
von ccode_new
Und schon kommt Hilfe.

Code: Alles auswählen

Procedure Loaded(Type, Filename$, ObjectId)
  
  OpenWindow(#PB_Any, 10, 10, 300, 300, "Image", #PB_Window_SizeGadget)
  ImageGadget(#PB_Any, 0, 0, ImageWidth(ObjectId), ImageHeight(ObjectId), ImageID(ObjectId))
  
EndProcedure

Procedure LoadingError(Type, Filename$, ObjectId)
  Debug Filename$ + ": loading error"
EndProcedure


BindEvent(#PB_Event_Loading, @Loaded())
BindEvent(#PB_Event_LoadingError, @LoadingError())

;Übergebe einfach dein Bild als gültige BASE64-URL.
;Hier ist ein Beispiel.
LoadImage(0, "data:image/png;base64,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")

;Exportiere dein Bild (als Download). (Achte auf die Dateiendung bei "data:image/". Hier ist es die Dateiendung ".png".)
ExportImage(0, "bild.png", #PB_ImagePlugin_PNG)

Re: Base64Decoder für Spider?

Verfasst: 03.04.2021 09:38
von stevie1401
Hm, erst einmal Danke für deine Hilfe.
Aber ich möchte das Bild nicht herunterladen.
Ich bekomme ein Bild via Bas64-String vom Server über einen Websocket und möchte es nun in ein Imagegadget legen.

Re: Base64Decoder für Spider?

Verfasst: 03.04.2021 10:09
von ccode_new
Das Beispiel zeigt die Lösung bereits.
Du musst maximal deinen Ausgangsstring noch URL konform anpassen. (Zum Beispiel mit den üblichen Zeichenkettenfunktionen)

Re: Base64Decoder für Spider?

Verfasst: 03.04.2021 20:03
von stevie1401
Ah Raterunde.
Steh ich nicht so drauf.
Kann mir jemand sagen, am besten anhand eines nachvollziehbaren Beispiels, wie ich ein base64-codiertes Bild in ein Imagadget legen kann?
Merci.

Re: Base64Decoder für Spider?

Verfasst: 03.04.2021 21:07
von ccode_new
Was macht die Funktion LoadImage?
Wie zeige ich ein Bild was mit LoadImage geladen wurde in einem ImageGadget an?

Alles solche unbeantwortete Fragen.

:mrgreen:

Re: Base64Decoder für Spider?

Verfasst: 04.04.2021 09:08
von stevie1401
Hat ausser diesem lustigen Ratefuchs jemand ein nachvollziehbares Beispiel parat?

Re: Base64Decoder für Spider?

Verfasst: 04.04.2021 09:49
von ccode_new
Erstens: Frohe Ostern!
Zweitens: Zeig mal eine Beispiel-Base64-Zeichenkette die du in einem Image-Gadget (als Bild) darstellen möchtest.

Mal sehen was so geht.

Re: Base64Decoder für Spider?

Verfasst: 04.04.2021 10:17
von stevie1401
Ich habe im Spiderforum jetzt folgendes gefunden:

Code: Alles auswählen


EnableExplicit

Define pic.s

pic="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFv0lEQVRYw61XeUxUZxB/arX+Yf8kadImp"+
    "IlpUtM0abRHrBVr0oaqUAXBiIKKXLqAIscCi4LgUhR2OVbEC7kPORVMDSJqKx5QS1srSNGmVFBQ8MAt+8"+
    "7d6Tff6naXfYscTjIJj/3eN7+Z+c3xGGYSUuXlNWsofPXCpxGegSO7/VP1Gbvy9JqovJHErWmPd3qGDOx"+
    "w/+xI0MLZzOuWvnC3j/RpO/LYkswhvigD+MJ04I6kAJelNOuRZPo//I2ceaJPj8wfUrgvmrbhB9s9nPWZ"+
    "ymquNMvE5e4BQ7Q3GKK8XqmcLh740izQZ6vO9CtWvz8l4w8j1/mypdnPuZz4CRmVBZIZA2xZjuFxrE8Iu"+
    "XLGRG3PeJwUqOar8sAQv3HKxi0a6wP8yVwYSVHoEhOZma+0PpQYkMpX5pKXvadv3Er58hx4mrI9d9xIPI"+
    "jw9qOeo/FIr9erCII4NhDjEy5rvDvA7T3MuSXs1i/HrAdOE2V5Fi+cImfWTRqAQUnuqdCxXSErP7QD8Ew"+
    "TXWtDOKuX2b1BAJII7P6d9FnqvAFsYoBDY+xuf6Jb7AEgMYkjI7qEFptUdIa4foylZsPg7HjgDiVZLpBu"+
    "toHUfsH8d/tFwnClAwDeYOy5CXzFQVkANBWkRO8Er1xmATCsDj1G69zqkPRHOxh7eyzhFs5WAl+WQ2o8A"+
    "YSGYtp4MDV8kQb4/DSLIb4kE8Sr54BN2UYqYIMsAE4bDU80ympq3GvBgjmGEu3w2CaDFwtVh4mhDJDaWk"+
    "CoyycXbgSxuYY8XwDx8lkwPboPL0X4oRzYhE0gVB+lKrbUg2l4ENjkYDsAqGyxdvS4++K3mK4A18+xhdq"+
    "VDvFObD1rzmlyCEhdHcCl7wKMlPF+L4DJBDZilMye7/EH6ffrpEXHgvjjmf8ramxZEpt3gla4MvcU7goa"+
    "zrEAkO3NtSSUISA0FoPx3l0QrzWDse8vcCSmwT4QThXQtCEHjP+QFDZVyQMo2A/9YR4q5r7ST4ODRQ6AU"+
    "H+Chp4v1gJ/LJXyYFwxGgl542j4xXPVIJ6vpTySA8Blx8KgOjSfGVSHncCJJgcASYcc4CsP0QoQrzRRIw"+
    "6FNVDesEmBZgcIYIyiLAe+D4VH2ao65kFqeIEcAPHaeRLSfmBTQykhX7IZo+IIhNT5C/G6DkxPh8jkXAf"+
    "G7t9oNBwBeJilqmf6Y32zcJ7bD5EN9BJk8csyw1SAwNta5QyUlFgFeJ72CUJYJJ/QWAK0ucmlgDg9oA4r"+
    "ZHqCV0U4IiEqp40xNx2lDwDPyVGPAkPyWVr11WZztE4XyfYBSsIT++Hv0DV7mVa/5V/JlmGkuXdj3Rvif"+
    "GkJOhIMs/TrFTK+/cwASBoogNrjwO7b7rAMb2xxXcO4LHCapy/SPJcDgC1X6mh9AcYHTM+GZQHwxZnAqh"+
    "WW/k/TgdFD0GSG0FIcc/9ooYaPWzLfiXbDe3sVJzmdyj4CLzyypOPgbppzG+8vNdrNA8y95R1NtJlD1gQ"+
    "kwPrTo5ssA6lp7ZfLcUDIccBu0pGqwEYjXmwgXTFR9ow1HxwNo8sbvl5jPY1n9adFXsId7lUAJqJCzTGH"+
    "05A9sBMGMuM7iE3b9b3cffGi0dIsDne46QLgDqeYuXFUbQsghpR1uU6s9/ximexW1B7kFo8L5HQBmIlYQ"+
    "ZbRPNuVrFwHHWFrD4y3F77RHbO5FBfI17mQUuPFGribENwwn2HeHHcrdnZm5nZG+1XQzZj0gWkbJ2FHz+"+
    "+oghpdnJzmTfTbYHZrwKrk0bJsgS6jUzSOhDOU5Uht2zy0zgwzd7IfRzMOr/hkaW9a5M9YNrhGTdgwqXN"+
    "8py8j9mbhqk+/mcxXkZzMqfxuseefSaHn/y3M4OjHKVkmcJ7jREPFwYK9HX8jZ4SefTt+qvdY6sNMwevx"+
    "ZKbr/HfePe25ZP31za4Zt+K21txWR7TcVu9quaUKrGv3/1bbsNbF1+ODt53x7EQv/Q8P90ed9khbrwAAAABJRU5ErkJggg=="


Procedure CatchImageExCallback(Image)
 
  OpenWindow(#PB_Any, 10, 10, 300, 300, "Image", #PB_Window_SizeGadget)
  ImageGadget(#PB_Any, 0, 0, ImageWidth(Image), ImageHeight(Image), ImageID(Image))
 
EndProcedure


Procedure CatchImageEx(Image, Base64String.s, Callback)
 
  Protected W, H, IID
 
  ! var i = new Image();
 
  ! i.onload = function(){
  !   v_w = i.width;
  !   v_h = i.height;
 
  If Image = #PB_Any
    Image = CreateImage(#PB_Any, W, H)
  Else
    CreateImage(Image, W, H)
  EndIf
 
  IID = ImageID(Image)
 
  !   v_iid.getContext("2d").drawImage(i, 0, 0);
  !   v_callback(v_image);
  ! };
 
  ! i.src = "data:image/png;base64," + v_base64string;
 
EndProcedure

CatchImageEx(0, pic, @CatchImageExCallback())




Ich kann das Callback aber nicht gebrauchen, da das der falsche Aufruf wäre.

Ich denke in der Procedure CatchImageEx(Image, Base64String.s, Callback) wird das Image gezeichnet, aber ich komme ums Verrecken einfach nicht an das Bild.
Ich brauche die Procedure CatchImageEx() mit einem Image als ProcedureReturn.

In der Procedure CatchImageExCallback() kann ich das Image tatsächlich sehen.
Kopiere ich es aber und möchte das Image in einer anderen Procedure verwenden, funktioniert es nicht.


(Loadimage() funktioniert definitiv NICHT)

Re: Base64Decoder für Spider?

Verfasst: 04.04.2021 11:37
von ccode_new
LoadImage() funktioniert definitiv doch.
Du musst aber auch diese Zeile:

Code: Alles auswählen

 "data:image/png;base64," + v_base64string;
beachten!

Aufgeteilt:
Das Wort: data
Das Zeichen: :
Der Datentyp: image
Das Zeichen: /
Der genaue Typ (Dateiendung): png
Das Zeichen: ;
Die Kodierung: base64
Das Zeichen: ,
Dein in Base64 kodierter String