IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Beaucoup de petites images ou une très grosse ?


Sujet :

Android

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut Beaucoup de petites images ou une très grosse ?
    Bonjour,

    Je suis grand débutant sur Android, et Java en général.

    Je souhaite écrire une petite application, très simple pour commencer.

    Il s'agit d'une sorte de support pour crafter dans un MMORPG.

    On a donc des matériaux qu'on combine entre eux pour obtenir des produits semi-finis, qu'on combine ensuite entre eux de façon à obtenir des objets utilisables dans le jeu.

    Je souhaite écrire une petite application dans laquelle on va pouvoir dire "j'ai crafté ça et ça, qu'est-ce que je peux bien en faire", ou "pour fabriquer ça, de quoi j'ai besoin".

    Le truc pas bien compliqué à la base.

    Pour la description des recettes et des matériaux, je pense utiliser des fichiers XML embarqués. L'avantage c'est que c'est léger, et que pour les mises à jour ce sera simple à gérer (pour le debug aussi).

    Pour les images, j'ai récupéré les pictos du jeu sous forme de petites images de 48x48 en 8 bits.
    J'ai plusieurs centaines de ces petites images.

    Et c'est là que je me pose la question :
    - Je ne veux pas que les images soient intégrées dans le binaire du programme de quelle que façon que ce soit (pour les mises à jour, ce sera plus simple de mettre à jour des images et des fichiers XML sans rien toucher d'autre).
    - Je souhaite afficher simplement des listes avec l'image du matériaux, de la façon la plus native possible.
    - Mais je doute qu'autant de petits fichiers soit une bonne idée. J'aimerais donc faire comme à l'époque de Civilisation 2, regrouper toutes les petites images en une seule grosse. Après, par un simple offset, je saurai que l'image numéro 42 est par exemple à la 2ème ligne, 12ème colonne (donc position 48,528) et récupérer l'image sous forme d'un crop de l'image globale.

    En termes de performances, déjà, est-ce que ça va apporter quel que chose ? Au niveau de la taille des fichiers, c'est certain. Au niveau de l'utilisation, ne vais-je pas me prendre la tête ?

    Ensuite, si la réponse est positive, connaissez-vous un programme qui permette de combiner un grand nombre de petites images ? Parce que à coup de copier/coller dans Paint, j'y suis encore à Noël, c'est certain !

    Exemple :
    J'ai des tas de fichier comme "aluminium.png".
    Et je souhaite tous les regrouper dans un gros fichier comme "test.png".
    Et ensuite, en me basant sur un masque de 48x48, retrouver l'image correspondant à un index.
    Images attachées Images attachées   
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Bon, finalement les fichiers XML et images seront directement intégrés dans le programme sous forme de ressources, j'ai l'impression que ce sera plus simple ^^

    Vu que les ressources sont mergées dans un unique fichier, j'imagine que le problème initial ne se pose plus du coup !

    En revanche, j'ai une petite question...

    Maintenant, j'ai des centaines de ressources.
    Je souhaite récupérer dynamiquement l'identifiant de ces ressources à partir d'une liste dans un fichier XML qui est aussi en ressource.

    En gros, j'ai des ressources images :
    material1.png
    material2.png
    material3.png

    Et un fichier XML qui dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <material id="1" name="Alluminium" img="material1.png"/>
    <material id="2" name="Iron" img="material2.png"/>
    <material id="3" name="Water" img="material3.png"/>
    Et une boucle de code (actuellement en dur, mais qui va être alimentée à partir du fichier XML) qui me sert à alimenter un ListView : (issu du tutorial http://a-renouard.developpez.com/tut...iser-listview/ )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            map = new HashMap<String, String>();
            map.put("titre", "Excel");
            map.put("description", "Tableur");
            map.put("img", String.valueOf(R.drawable.excel));
            listItem.add(map);
    Sauf que moi, j'ai pas "R.drawable.excel" mais une chaîne de caractères "material1.png".
    Existe-t-il une méthode genre ?

    Ressources.GetByName("R.drawable." + img);
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Non seulement ce sera plus simple, mais ca rendra l'application accessible "offline" (ce qui est quand même l'essence d'une application native).

    Sinon... oublier le ".png"... ne conserver que "material1" par exemple...

    Et utilser la fonction getIdentifier() sur l'objet Resources (getResources() sur un Context)

    Autre solution... utiliser la reflection de java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try {
       Field f = R.drawable.class.getField(resourceName);
       int resid = f.get(null);
    } catch (Exception ex) { Log.e("TAG","Missing application ressource !",ex); }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. [2005] Vider une très grosse table
    Par a4i.ludo dans le forum MS SQL Server
    Réponses: 24
    Dernier message: 12/06/2013, 11h28
  2. Sauvegarde d'une TRÈS grosse matrice
    Par Djeu Kuru dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/03/2013, 10h47
  3. [GD] Perte de qualité lors de la superposition de 2 petites images sur une autre
    Par angebleu1759 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 04/12/2007, 15h46
  4. plein de petites tables ou une grosse?
    Par loveflower dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 09/11/2004, 17h00
  5. copier une petite texture sur une grosse texture
    Par gaut dans le forum DirectX
    Réponses: 5
    Dernier message: 15/10/2004, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo