PureBasic
https://www.purebasic.fr/french/

Convertir un fichier/une image en Base64
https://www.purebasic.fr/french/viewtopic.php?f=6&t=13000
Page 1 sur 1

Auteur:  Golfy [ Mer 01/Aoû/2012 14:18 ]
Sujet du message:  Convertir un fichier/une image en Base64

Les fonctions sont toutes dans Purebasic mais un collègue avait besoin d'un EXE pour pouvoir intégrer des images dans un code HTML... j'ai fait ça à l'arrache (merci Dobro pour le readdata vers un buffer que j'ai trouvé dans un de tes posts)

Code:
; programme pour convertir une image (JPG, PNG, etc) ou un fichier en Base64 (pour intégration sur
; des pages web intégrées à des appliances (Bluecoat, Sonicwall, etc.)

Procedure.s codage(file$)
   If ReadFile(0, file$)           ; Si le fichier peut être lu , on continue...
      length = Lof (0)
      *buffer=AllocateMemory(length)
      r = ReadData(0,*buffer,length)
    CloseFile(0)               ; Ferme
      Encoded$ = Space(length*3)
      Resultat = Base64Encoder(*buffer, length, @Encoded$, length*3)
      ProcedureReturn Left(Encoded$,resultat)
   Else
      ProcedureReturn ""
   EndIf
EndProcedure
Procedure afficheText(a$)
   b$=""
   s.i = Val(GetGadgetText(2))
   If s > 0
      t=1
      Repeat
         b$ = b$ + Mid(a$,t,s.i)+Chr(13)+Chr(10)
         t = t + s.i
      Until t+s.i > Len(a$)
      b$ = b$ + Right(a$,Len(a$)-t)
      SetGadgetText(3,b$)
   EndIf
EndProcedure

UseJPEGImageDecoder()
UseJPEG2000ImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()

OpenWindow(0,10,10,600,400,"Image-2-BASE64",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ButtonGadget(1,10,5,60,18,"Fichier")
StringGadget(2,150,5,30,18,"76")
EditorGadget(3,10,30,570,350)
TextGadget(5,110,5,50,18,"largeur")
ButtonGadget(4,450,5,60,18,"Copier")

Repeat
   a = WaitWindowEvent(50)
   If a = #PB_Event_Gadget
      Select EventGadget()
      Case 1 ; bouton fichier
         file$ = OpenFileRequester("Load image","","images|*.jpg;*.png;*.gif",0)
         a$ = codage(file$)
         afficheText(a$)
      Case 2   ;
         If Len(a$)>0
            afficheText(a$)
         EndIf
      Case 4
         SetClipboardText(GetGadgetText(3))
      EndSelect
   EndIf
Until a = #PB_Event_CloseWindow

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/