Inclusion d'images dans un exe

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Inclusion d'images dans un exe

Message par PhM »

Bonjour,

J'ai réalisé un petit programme qui analyse un plan de vol généré par Simbrief pour Microsoft Flight Simulator (FS2020).
Il fonctionne bien mais un détail me chagrine.

L'image de présentation (SimBrief.png), incluse dans la fenêtre principale, a été mise en mémoire dans les datas :

Code : Tout sélectionner

DataSection

  Image_Start:
  IncludeBinary "SimBrief.png"    ; inclusion des images dans le programme
  Image_End:
  
  Image_Start1:
  IncludeBinary "T.png"
  Image_End1:
  
  Image_Start2:
  IncludeBinary "Takeoff2.png"
  Image_End2: 

  Image_Start3:
  IncludeBinary "Landing2.png"
  Image_End3:
  
  Image_Start4:
  IncludeBinary "papier.png"
  Image_End4:  
  
EndDataSection
Elle est appelée classiquement par :

Code : Tout sélectionner

  If CatchImage(0, ?Image_Start, ?Image_End - ?Image_Start) 
    ImageGadget(4, 140, 15, ImageWidth(0), ImageHeight(0), ImageID(0))         ; ImageGadget Simbrief affichée
  EndIf
Et, cela fonctionne et, jusqu'à là, tout va bien.

Mais, j'ai 4 autres images, mises en mémoire de la même façon dans les datas que j'appelle au travers d'une page html construite par le programme. Plus précisément, incluses dans une carte Leaflet/Openstreetmap au travers des fonctions construites :

Code : Tout sélectionner

	WriteStringN(1,"      var plane = L.icon({")
	WriteStringN(1,"          iconUrl: 'T.png',") ; T.png
	WriteStringN(1,"          iconSize: [10, 10],")
	WriteStringN(1,"          iconAnchor: [5, 6],")
	WriteStringN(1,"          popupAnchor: [0, 0],")
	WriteStringN(1,"      });	")
	WriteStringN(1,"")
Si les images (ici T.png) sont bien présentes dans le même dossier que le programme, cela fonctionne mais, si je les retire, et bien qu'elles aient été mise en mémoire tampon, cela ne marche plus ?

Dans ce cas assez spécifique, pensez-vous avoir une solution ?

Par avance, merci pour le partage de votre savoir...
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Inclusion d'images dans un exe

Message par Mindphazer »

A mon avis, vus qu'elles sont incluses dans ton exe, il faudrait que, au démarrage de ton appli, tu crées ton ou tes images, par exemple de cette manière :

Code : Tout sélectionner

If CreateFile(0, "T.png")
  WriteData(0, ?Image_Start1, ?Image_End1 - ?Image_Start1)
  CloseFile(0)
Endif
Comme ça, tes images existent dans ton dossier, et elles peuvent être chargées par ta page HTML
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Inclusion d'images dans un exe

Message par PhM »

Oui, tu as bien compris et ta méthode est certainement bonne mais, une fois créer au lancement du programme, ces images seront présentes et visibles dans le dossier du fichier HTML.

Ou alors, il faudrait que le programme efface les images une fois la page HTML affichée.

En tout cas, merci, je vais tester ta méthode.
Avatar de l’utilisateur
SPH
Messages : 4942
Inscription : mer. 09/nov./2005 9:53

Re: Inclusion d'images dans un exe

Message par SPH »

PhM a écrit : dim. 17/déc./2023 19:49 En tout cas, merci, je vais tester ta méthode.
Tu nous diras si tu as réussi. Ca m'intéresse de savoir ta méthode. :arrow: :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Inclusion d'images dans un exe

Message par Mindphazer »

PhM a écrit : dim. 17/déc./2023 19:49 Oui, tu as bien compris et ta méthode est certainement bonne mais, une fois créer au lancement du programme, ces images seront présentes et visibles dans le dossier du fichier HTML.

Ou alors, il faudrait que le programme efface les images une fois la page HTML affichée.

En tout cas, merci, je vais tester ta méthode.
Sinon, tu enregistres tes images dans le répertoire temporaire (GetTemporaryDirectory()) et tu mets le chemin complet dans ton fichier HTML
Elles seront toujours visibles, mais quand même plus difficilement accessibles
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Inclusion d'images dans un exe

Message par PhM »

Merci pour vos réponses éclairées.

Tout d'abord, pour Mindphazer et SPH, oui la solution WriteData fonctionne parfaitement d'un point de vue technique. Néanmoins, elle ne fait que placer les images générées dans le dossier du fichier HTML. Et, les effacer ensuite, empêche la consultation ultérieure de ce même fichier HTML avec ces images.

Ceci étant dit, l'idée de stocker en binaire les images pour les ressortir ensuite de ce programme pourra me servir à l'avenir. Cela m'a directement fait penser à un système de cryptage avec mot de passe pour accéder à un fichier d'images...

Mais, j'ai donc opté pour une autre méthode plus simple que de cacher les images dans un dossier. J'ai utilisé un hébergeur d'images gratuit, en l’occurrence, zupimages (https://www.zupimages.net/).

Je l'utilise depuis quelques années, notamment pour placer des images sur des forums et, il semble fiable avec un accès dans le temps des images. Au pire, j'aurai le pouvoir de réagir si il devenait défaillant.

Peut-être connaissez-vous un équivalent aussi fiable ?

Code : Tout sélectionner

	WriteStringN(1,"      var plane = L.icon({")
	WriteStringN(1,"          iconUrl: 'https://zupimages.net/up/23/50/sji6.png',") ; T.png
	WriteStringN(1,"          iconSize: [10, 10],")
	WriteStringN(1,"          iconAnchor: [5, 6],")
	WriteStringN(1,"          popupAnchor: [0, 0],")
	WriteStringN(1,"      });	")
	WriteStringN(1,"")
Merci encore pour cette aide qui a enrichie ma réflexion sur le sujet.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Inclusion d'images dans un exe

Message par Ar-S »

Je t'ai MP, sinon regarde ma signature.. 8)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Inclusion d'images dans un exe

Message par PhM »

Merci, je t'ai répondu !
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Inclusion d'images dans un exe

Message par PhM »

Le programme PLN Analyseur est disponible dans la rubrique Applications.
Merci à tous pour votre aide.
Avatar de l’utilisateur
SPH
Messages : 4942
Inscription : mer. 09/nov./2005 9:53

Re: Inclusion d'images dans un exe

Message par SPH »

PhM : j'essaye de résumer ta demande (j'espère ne pas me tromper)

:arrow: Comme tu embarques l'image en datas dans ton EXE, tu voudrais utiliser ces datas pour afficher l'image sans qu'il faille réécrire les datas dans un fichier. Puisque ces data sont dans la mémoire de l'ordi (quand on lance l'exe), comment les utiliser tel quel ! :!: :?:

J'ai bon ? :?:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Inclusion d'images dans un exe

Message par Mindphazer »

Je crois que oui ! :mrgreen:
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
SPH
Messages : 4942
Inscription : mer. 09/nov./2005 9:53

Re: Inclusion d'images dans un exe

Message par SPH »

Mindphazer a écrit : lun. 18/déc./2023 18:25 Je crois que oui ! :mrgreen:
... et la réponse est .......... ?? :?: :!: :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: Inclusion d'images dans un exe

Message par PhM »

SPH :

oui, c'était cela. Mais, j'ai changé de méthode en téléchargeant les images de la page HTML depuis un serveur extérieur. Il n'y a donc plus de raison d'inclure les images liées à la page HTML générée dans l'exe !

L'application est terminée et diffuser sur ce forum, entre autres, à la rubrique "APPLICATIONS"
Avatar de l’utilisateur
SPH
Messages : 4942
Inscription : mer. 09/nov./2005 9:53

Re: Inclusion d'images dans un exe

Message par SPH »

Ok, mais moi, ça m'intéresse de savoir comment interpréter les datas d'une image dans un EXE :!:

Si quelqu'un sait le faire, please, dites le moi :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Inclusion d'images dans un exe

Message par Ar-S »

@SPH
Tu as l'exemple dans son code...

A la compilation tu inclus l'image

Code : Tout sélectionner

;L'image est chargée en mémoire de l'exe car inclus dans la datasection
If CatchImage(0, ?Image_Start, ?Image_End - ?Image_Start) 
    ImageGadget(4, 140, 15, ImageWidth(0), ImageHeight(0), ImageID(0))         ; ImageGadget Simbrief affichée
  EndIf

; inclusion des images dans le programme
  DataSection
  Image_Start:
  IncludeBinary "tonimage.png"    
  Image_End:
  
  endDatadection
  
A la différence de loadimage qui va chercher un fichier, ton catchimage va chercher les datas dans ton exe.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre