Messagerie


Le poids des images [Résolu]

Poum
vendredi 24 mars 2017 à 17:48
Bonjour à tous,

En ouvrant un nouveau projet vide et en le construisant (en .EXE), je me retrouve avec un fichier d'un poids d'environ 2 Mo.
En ajoutant une image de 500Ko en fond, la même construction me génère un exécutable de plus de 100Mo  ???

Savez-vous d'où vient cette différence de poids ?
Puis, surtout, comment éviter ce genre d’"aberration" ?

J'ai remarqué des possibilités de compression du Runtime ou des sons mais rien sur les images. 
Si ça peut aider, l'image a été ajoutée par un objet décor et l'application fait 5000x5000 pixels.

Merci d'avance pour vos réponses.

Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 18:15
Salut Poum,

Je vais essayer d'expliquer simplement, un truc difficile à capter.

En gros CTF gère les fichiers image à sa façon, on contourne le problème en chargeant les images.

A+

Édit:
On peut contourner le problème en chargeant aussi des images découpées, façon puzzle, mais cela réclame des notions de programmation.
Poum
vendredi 24 mars 2017 à 18:25

On peut contourner le problème en chargeant aussi des images découpées, façon puzzle, mais cela réclame des notions de programmation.


J'ai quelques petites notions de programmation (en quel langage ? ) :-)
Je veux bien essayer mais je ne connais pas la méthode.

As-tu une piste à me proposer ?
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 18:48
J'ai quelques petites notions de programmation (en quel langage ? ) :-)

:D

Le klik and play code, ou le langage CTF 2.5, évidemment.

La procédure pour charger une image se trouve dans le dossier MFA hyper novice.

http://comptoir-mmf.eu/Forum/index.php?topic=1069

Édit:

Apppath$+"image\"+"01.png"

Apppath$ => Le chemin vers l'application (le jeu).
+"image\" => Le dossier => image (un dossier dans le jeu).
+"01.png" => Le fichier 01.png => se trouve dans le dossier image.

Cela passe par l'éditeur d'expression, un objet actif peut charger une image.
Poum
vendredi 24 mars 2017 à 18:58
Merci beaucoup Kloug.

Je vais me plonger dans cette nouvelle aventure.

Donc, avant cela, je récapitule : en découpant une grosse image et en l'assemblant en mémoire, on évite ce genre de désagréments ?
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 19:09
Je t'explique la problématique, pour éviter un exe trop lourd, on réalise un dossier image, dans ce dossier des *.png ou autres.

Si tes images c'est du *.bmp 16 m, cela ne changera pas grand chose (lol).

Le souci avec cette méthode, on peut ripper ou voir une solution (exemple un labyrinthe), dans ce cas on peut découper l'image façon puzzle, pour ensuite la reconstituer.

Si tu te moques du rip, ou autre tu charges simplement une image.

Apppath$+"01.png"

Édit:
Le format PNG est un bon compromis.
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
vendredi 24 mars 2017 à 19:26
Salut salut,

L'affichage de grandes image est traité dans ce sujet et je suis assez fière de ma méthode) : http://comptoir-mmf.eu/Forum/index.php?topic=1810.msg16049#msg16049

Tu peux aussi te baser sur cette autre méthode (qui est en fait presque la mème) qui utilise un tileset : http://comptoir-mmf.eu/Forum/index.php?topic=1826.msg16286#msg16286
Poum
vendredi 24 mars 2017 à 19:47
Bien intéressant (surtout pour les sprites).

Cela dit, si je comprends  bien la logique de Fusion (mais je n'ai pas encore testé), si je découpe mon image en 9 / 16 / ... images plus petites, je serais gagnant ?
Sachant, que dans mon cas, qu'il s'agit d'un simple décor dans un calque.

Si oui, il y a-t-il un règle a respecter (taille maximale) ?
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 20:51
En théorie il n'y a pas de taille maximale, tout dépend du niveau de programmation du clickeur.

Dans ton cas, tu dois faire avec ton expérience, c'est à dire mettre au point un moteur que tu comprends.

Ce qui est difficile avec CTF, ce sont toutes les possibilités.

Tu es le chef de projet, à toi de bien cerner la problématique et de la résoudre, de faire des tests afin de savoir ce que tu gagnes ou ce que tu perds.
Poum
vendredi 24 mars 2017 à 21:29

La procédure pour charger une image se trouve dans le dossier MFA hyper novice.


J'ai regardé tes exemples et voilà ce que j'en déduis.
Ne pas charger les images dans le fichier mais les laisser de côté (dans un dossier).
Les charger en cours d'exécution.

Exacte ?

Là, le .exe aura une taille minimale et les images les poids que l'on veut bien leur donner.
volgot
vendredi 24 mars 2017 à 21:33
Oui c'est clair que ça allège le exe en faisant comme ça.
Par contre faut trimbaler tes images à côté du programme... c'est un choix ! ;)
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 21:33
Exact, voici un exemple de chargement d'image découpée, bien sûr on peut utiliser une BR comme Seyjin, pour un affichage instantané, je n'en disconviens pas, la méthode est ancienne depuis j'ai légèrement progressé, mais le principe reste valable, surtout compréhensible.

Édit:
La taille d'un jeu est importante lors d'un téléchargement, perso plus de 100 mo pour un jeu amateur, à moins d'une capture d'écran somptueuse, j'abandonne.

Pièces jointes
Poum
vendredi 24 mars 2017 à 22:19
Ca fonctionne pas mal cette histoire, je suis content  :)

Reste que je n'arrive par à faire un truc : redimensionner l'image active en fonction de la taille de l'image fichier.

J'ai bien vu qu'on pouvait lui indiquer sa taille mais comment récupérer les valeusr largeur / hauteur d'une image fichier ?

Je pourrais évidement l'indiquer manuellement mais j'aurais aimé automatiser la chose  ::)
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 22:36
Pas de souci pour charger un fond, pour le reste tout dépend du projet...
Pièces jointes
Poum
vendredi 24 mars 2017 à 22:55
Merci Kloug mais ce n'est pas ça que je cherche.

Mon image n'est pas de la taille de la frame.

Pour être précis, il s'agit du fond du jeu mais avec un scrolling à 0.2. Donc, une image plus grande que l'application et plus petite que la scène.
Je voudrais "lire" la taille (du fichier image.jpg) en largeur / hauteur.

Cela dit, comme je le disais plus haut, ce n'est qu'une image par scène et je peux très bien indiquer ces deux valeurs en dur.


Pour info, j'ai utilisé ta technique et ça fonctionne parfaitement. J'ai gagné 50 Mo (même si je me demande pourquoi ça reste encore pas mal lourd).
Merci beaucoup pour ton aide.
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 23:09
"Merci Kloug mais ce n'est pas ça que je cherche."

Je m'en doutais un peu (lol), sans un fichier mfa, difficile d'apporter une solution spécifique.

CTF ne peut pas deviner par avance la taille de l'image, par contre on peut soit déterminer à l'avance la taille de l'image via une capture d'écran, soit imposer une taille à l'objet image active via une formule.

En prime avec un scrolling, ou faux scrolling, il existe une méthode de chargement d'images via une variable, un compteur, un numéro de case virtuelle.

Édit:
Si mes souvenirs sont bons, on peut encore alléger l'application, mais au détriment de la qualité des graphismes.
Kloug
1497 messages
Fusion 2.5
vendredi 24 mars 2017 à 23:48
Un exemple de faux scrolling avec chargement d'une image.
Pièces jointes
Poum
samedi 25 mars 2017 à 01:36

Si mes souvenirs sont bons, on peut encore alléger l'application, mais au détriment de la qualité des graphismes.


Au cas où ça te revient, je veux bien tester ta méthode pour voir si je gagne (perd) en poids sans trop dégrader la qualité graphique.
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 25 mars 2017 à 08:51

Reste que je n'arrive par à faire un truc : redimensionner l'image active en fonction de la taille de l'image fichier.

J'ai bien vu qu'on pouvait lui indiquer sa taille mais comment récupérer les valeusr largeur / hauteur d'une image fichier ?

Je pourrais évidement l'indiquer manuellement mais j'aurais aimé automatiser la chose  ::)


Je ne comprend pas où est le souci. L'image active prend automatiquement les dimensions de l'image.
Pièces jointes
890 messages

samedi 25 mars 2017 à 08:55
pour trouver la taille d'une image, il te suffit de prendre pour la longueur la coordonnées X du bord droit de l'image - coordonnée X du bord gauche de l'image. Idem pour la hauteur : coordonnée Y du bord bas de l'image - coordonnée du bord haut de l'image. Et dans tes expressions de test, tu fais référence à ces soustractions.
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 22 visiteurs au total

Derniers messages