charger des images avec un for

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mwoua
Messages : 44
Inscription : lun. 24/oct./2005 10:28

charger des images avec un for

Message par Mwoua »

Bonjour à tous !

* je cherche à insérer des images (petites en taille mais nombreuses) dans mon executable. Or, se taper les :

01 : IncludeBinary "image01.png"
02 : IncludeBinary "image02.png"
03 : ....

est un peu long :? Quelqu'un voit comment faire autrement ?

* De plus (et surtout) :

Je veux ensuite n'en charger en mémoire qu'une petite quantité, mais aléatoire : la 12, la 41 et la 5 par exemple, et puis une autre fois, ... vous avez compris. les n° sont dans un tableau.

mon idée :

for i=1 to 3
CatchImage(tab(i),?tab(i))
next i

mais ça marche pas :mad: !

Ma seule solution serait-elle de toutes les charger ?

Merci à tous !
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pour le premier point, fais toi une macro du genre :

Code : Tout sélectionner

Macro IncBin(Num)
 Num: IncludeBinary "imageNum.png" 
EndMacro
IncBin(01)
IncBin(02)
IncBin(03)
IncBin(04)
Normalement ca devrait marcher.
Mwoua
Messages : 44
Inscription : lun. 24/oct./2005 10:28

Message par Mwoua »

ah ouai, les macros... j'avais pas pensé. merci, je vais essayer ça.

et sinon, pour mon 2ème problème :oops: ? c'est le + pénible je pense.

edit :
peut-être un GrabImage d'une grande image contenant les petites mises bout à bout... mais du coup j'utilise quand même de la mémoire pour toutes les images :twisted:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mwoua a écrit : peut-être un GrabImage d'une grande image contenant les petites mises bout à bout... mais du coup j'utilise quand même de la mémoire pour toutes les images :twisted:
heu! de toute façon lorsque tu fait "IncludeBinary "image01.png" "
tu consomme aussi de la mémoire vive (Ram), puisque l'image est incluse dans le prg !!
lorsque celui-ci se charge en Ram, il charge aussi les includes !! :?

si tu veut consommer un minimum de mémoire vive, va falloir, utiliser de la mémoire de masse !

c'est a dire créer des fichiers (ou une archive), et ne charger l'image qu'au moment ou t'en a besoin ! :)

mais c'est au détriment de la vitesse (+ d'accès disque)
par contre grosse économie de Ram !
lorsque c'est bien geré (pré chargement avant utilisation)

ç'est quand même rapide, on a des disques qui pédalent maintenant :D
Dernière modification par Backup le mer. 29/nov./2006 13:10, modifié 2 fois.
Mwoua
Messages : 44
Inscription : lun. 24/oct./2005 10:28

Message par Mwoua »

Effectivement.

Mais derrière ce problème, je me disais qu'il serait interessant de voir si l'on pouvait faire un for avec des pointeurs ou en tout cas avec des adresses mémoires :D

Merci bien en tout cas.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mwoua a écrit :Effectivement.

Mais derrière ce problème, je me disais qu'il serait interessant de voir si l'on pouvait faire un for avec des pointeurs ou en tout cas avec des adresses mémoires :D

Merci bien en tout cas.
pas de cette façon en tout cas, car pour faire un For-next avec des adresse , il faudrai etre sur qu'elles se suivent !!

ce qui n'est pas garanti dans les Catch*

par contre tu peut charger tes images , et faire un For-next utilisant leur index :D
mais tu n'economisera pas de Ram , puisque tout sera present en Ram :D

pareil en utilisant une adresse buffer, mais c'est se compliquer la vie pour rien :D
Mwoua
Messages : 44
Inscription : lun. 24/oct./2005 10:28

Message par Mwoua »

bon bah vue que la ram est bien souvent largement suffisante, je vais me contenter d'en prendre sans me poser de question, avec un grab sur une image unique.

Ce serait bien d'avoir une fonction value() qui transformerait automatiquement un texte, ou un nombre en un format attendu par la fonction utilisée :

Code : Tout sélectionner

for i=1 to 10
    Id$="Id_"+str(i)
    MemoryAdress$="?"+str(i)

    catchimage(value(Id$),value(MemoryAdress$))

next i
voire même, du coup :

Code : Tout sélectionner

Id$="Id_"+value(i)
ou bien carrément :

Code : Tout sélectionner

Id$="Id_"+i
8)
Répondre