Android script Photoshop pour exporter en ldpi, hdpi et xhdpi.

Ce contenu a été rédigé il y a 7 années. Il se peut qu'il ne soit plus à jours.

[UPDATE] Ces actions sont dépassées, j’ai fais une mise à jouer disponible sur l’article 
Android Photoshop actions to export to mdpi hdpi xhdpi xxhdpi and xxxhdpi

En général quand je crée une application, je pars du mdpi, du coup, pour suivre les guidelines android, il faut re-créer tous les drawables en ldpi, hdpi et xhdpi. C’est assez long et fastidieux.  Il existe des outils en ligne qui vous permettent de générer les différentes tailles à partir de png comme Asset studio, cependant si on leur fourni la version mdi, la xhdpi (le double) risque de finir pixelisée.
J’ai donc créé un  set de petits scripts photoshop (action en anglais) qui automatise la transformation.

android resize script
Ces scripts partent du postulat que la version de base est mdpi, pour convertir les drawables. Ils sont basés sur ces ratios :

Android drawable RatioIls peuvent donc non seulement être utilisés pour les icônes, mais pour n’importe quel autre drawable plus ou moins conventionnel.
Les trois premiers scripts sont à utiliser séparément, le dernier script rassemble les trois dimensions.
Notez que pour éviter une pixellisation au redimensionnement, il vaut mieux travailler avec des calques vectoriels et éviter au maximum d’utiliser des calques pixelisés pour éviter les déformations en xhdpi.

Mode d’emploi du script:

  1. téléchargez le script, et installez le (glisser déposer dans l’onglet « actions » ou « scripts » selon votre langue) dans photoshop
  2. Créez vos dossiers  :
    res/drawable-ldpi/…
    res/drawable-mdpi/…
    res/drawable-hdpi/…
    res/drawable-xhdpi/…
  3. Lancez votre script.
  4. A la fin du redimensionnement, le script enregistre le fichier au format PNG24 pour le web, et va vous demander le nom du fichier. C’est là que vous devrez choisir le bon dossier.
  5. Le dernier script rassemble les trois redimensionnements dans l’ordre suivant : ldpi, hdpi, xhdpi et demande à chaque export l’endroit et le nom du fichier à enregistrer.

script android resize en action

Vous pouvez télécharger le script ci dessous, n’hésitez pas si vous avez des questions sur l’utilisation des scripts.

Vous souhaitez des conseils en ergonomie ou en expérience utilisateur ? Un design de site, d’interface ou d’application mobile ? Envie de travailler ensemble ou de m’inviter à donner une conférence ? Consultez mes réalisations ou contactez moi directement.

7 réflexions au sujet de « Android script Photoshop pour exporter en ldpi, hdpi et xhdpi. »

  1. Bonjour,
    Ca a l’air intéressant mais le lien ne semble pas correspondre à un script Photoshop…
    Cordialement,

    • Hum on dirait que mon plugin de téléchargement de fichiers s’est mélangé les pinceaux en deux fichiers, merci de l’avoir signalé je viens de re-générer le lien, ça m’a l’air bon.
      Encore désolé ^^

  2. Bonjour,

    Voilà un script particulièrement pratique pour générer ses NinePatch en un clic dans toutes les résolutions. Merci encore :)
    J’ai cependant une petite question sur le fichier de « base » (en résolution mdpi) qui doit être créé. D’après les guidelines d’Android ICS, le mdpi correspond à du 160dpi. Mais quelle doit être la taille du canevas sous Photoshop ? Du 32*32 ?

    Cordialement,

    Aymeric

    • Pour les NinePatch ce n’est pas une bonne idée, pour la simple raison qu’il faut que le pixel noir ai 1px de large. Si on exporte en hdpi, il fera du coup 1.5, et j’ai des doutes sur le fait que ça marche. J’ai jamais essayé, à tester en fait, mais il me semble que le 1px est une condition.
      Pour le canevas, j’avoue ne pas vraiment comprendre le 32*32, il s’agit d’une icone par exemple ?

      • Effectivement en y repensant ça ne va pas marcher pour les NinePatch, car le pixel noir doit obligatoirement faire 1 pixel de large. Sinon il n’est pas reconnu : il suffit de l’ouvrir avec l’utilitaire Draw9Patch pour voir qu’il n’est pas reconnu…
        Pour la taille du canevas, c’est en fait la taille que j’ai l’habitude d’utiliser pour mes NinePatch car j’utilise beaucoup cette technique, notamment pour faire des boutons personnalisés. En tout cas, le script reste très pratique pour tout autre élément de design que les NinePatch, ce qui est déjà très appréciable :)