Existe-t-il un moyen de créer des tirages xxhdpi, xhdpi, hdpi, mdpi et ldpi à partir d'une image à grande échelle?


271

Existe-t-il un moyen de créer automatiquement des tirages xxhdpi, xhdpi, hdpi, mdpi et ldpi à partir d'une image à grande échelle? Par exemple, supposons que j'ai une image 512x512 et que je souhaite avoir différentes versions de ces images pour différentes résolutions d'écran prises en charge par Android dans les dossiers appropriés.


3
Si vous êtes sous Windows: github.com/delight-im/AndroidDrawableResizer
caw

J'ai fait cet outil sur Android, vous mettez votre photo dans le dossier de téléchargement de votre téléphone, puis sélectionnez une taille de référence et dpi, et il se convertit à toutes les densités et crée les dossiers appropriés: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun

Vérifiez cette réponse pour une méthode rapide et facile - stackoverflow.com/a/40830399/4015856
Asim KT

4
Dans Android Studio, res -> New -> Image AssetLauncher Icons (legacy)
faites un

Réponses:


191

Option n ° 1: -xxhdpiexpédiez simplement les drawables et laissez Android les sous-échantillonner pour vous au moment de l'exécution (inconvénient: ne fonctionnera que sur des appareils assez récents, où cela -xxhdpiest connu).

Option n ° 2: utilisez Android Asset Studio pour les sous-échantillonner pour vous.

Option # 3: Automatisez le processus dans un éditeur graphique, selon la réponse de ssantos .

Option # 4: Scriptez-vous une solution, en utilisant quelque chose comme ImageMagick.

Option n ° 5: utiliser l' image baker


L'expédition uniquement xxhdpi et xhdpi est-elle une alternative? Je suppose que les appareils qui ne comprennent pas xxhdpi se réduiront de xhdpi
Juan Campa

@Juan: "L'expédition est-elle uniquement xxhdpi et xhdpi une alternative?" - uniquement si vous avez minSdkVersion8 ans ou plus. Si vous essayez de prendre en charge des appareils plus anciens que cela, vous en aurez également besoin hdpi, car ni l'un xhdpini l'autre xxhdpin'existait pour l'API de niveau 7 et inférieur. Maintenant, si vous aimez l'apparence de vos tirables sous-échantillonnés, c'est une tout autre affaire ...
CommonsWare

En ce qui concerne l'option n ° 1 et vos commentaires sur l' xxhdpiinexistence, je ne pense pas que ce soit correct. En interne, Android utilise des nombres DPI (160, 320, 480, etc.), et non des chaînes, pour les qualificateurs de ressources. Si le DPI du système est de 160 et qu'il trouve une image de 640, il la sous-échantillonnera de 4, sans avoir besoin de "connaître" son qualificatif textuel. Nous avons envoyé des ressources qui n'existent que dans le xxxhdpidossier (Android 4.3) aux appareils Android 2.3.
Matt Quigley

l'option 2 ne prend pas en charge xxxhdpi
Nom d'affichage

2
Option # 4: Solution de script avec ImageMagick ici
rdromao

158

Mise à jour :

Le plugin mentionné précédemment a été abandonné, mais il a apparemment une fourchette à jour ici .

Ancienne réponse :

J'utilise le plugin Android Studio nommé Android Drawable Importer:

entrez la description de l'image ici

Pour l'utiliser après l'installation, faites un clic droit sur votre dossier res / drawable et sélectionnez New > Batch Drawable Import:

Sélectionnez ensuite votre image via le +bouton et définissez la résolution sur xxhdpi (ou quelle que soit la résolution de votre image source).


13
Merci, mais j'ai utilisé «Importation par lots de dessins» au lieu de «Scaled Drawable».
Malder le

Comme @ user123456 le dit, j'ai dû utiliser Batch Drawable car Scaled Drawable n'apparaissait pas
lujop

1
Ce plugin ne semble plus être maintenu - dernier commit en 2016 ( github.com/winterDroid/… ), rapports de plantage sans aucune réponse ...
réduction de l'activité

3
J'ai réussi à ressusciter cet adorable plugin sous AS 3.6 et peut-être, bien que non testé, sous AS 3.5 également.
Bad Loser

2
@PrajwalW, réponse mise à jour pour mentionner la fourche mise à jour.
Adam Johns

97

Mettre à jour:

L'ancienne façon d'installer le plugin ne fonctionne plus mais un fork du plugin original est toujours fonctionnel ici . Vous pouvez toujours suivre cette réponse après avoir installé le plugin manuellement.

Si vous voulez un moyen rapide et facile, visitez https://www.img-bak.in/ ou https://appicon.co/ ils fonctionnent également avec iOS.

J'essaierai d'expliquer le processus étape par étape, afin qu'il soit simple à comprendre pour tout le monde.

1. Installez le plug-in manuellement comme indiqué dans le ReadME

2. Redémarrez le studio Android

3. Comme vous pouvez le voir dans le screencap suivant, il n'y a qu'un seul dessinable ici

entrez la description de l'image ici

4. Maintenant, faites un clic droit sur le dossier dessinable et accédez à Nouveau> Importation dessinable par lots

entrez la description de l'image ici

8. Cliquez maintenant sur l'icône d'ajout

5. Sélectionnez maintenant "l' image unique" dont vous voulez différentes variations de dessin.

entrez la description de l'image ici

6. Sélectionnez maintenant la dimension de l'image d'origine. Si l'image d'origine est xxhdpi comme dans mon cas, sélectionnez "xxhdpi" comme "Source Resoultion".

7. Appuyez maintenant sur ok puis ok à nouveau .. et cela prendra quelques secondes et vous obtiendrez comme par magie toutes les variables des drawables.entrez la description de l'image ici

entrez la description de l'image ici


3
Ce plugin est bon, mais la taille d'origine doit avoir une résolution suffisante pour conserver une bonne qualité pour l'actif. Je suppose qu'il vaut mieux demander au concepteur des actifs xxxhdpi au départ, puis les réduire.
narko

@LaxmanBhattarai, je souhaite prendre en charge mon application en mode paysage uniquement sur tablette uniquement. Donc, selon votre réponse, quel dossier que je devrais dessiner pour les images afin de prendre en charge tous les tablettes? Pouvez-vous me le faire savoir?
Hiren Patel

developer.android.com/training/basics/supporting-devices/… veuillez vous référer à ce document et je pense que l'ajout de -land à la fin de n'importe quel dossier peut entraîner une mise en page paysage
erluxman

L'option "Icon Pack Drawable Importer" utilise des icônes Material / Android et résolu pour moi. Merci pour le pourboire @LaxmanBhattarai
Francis Rodrigues

1
Ce plugin ne semble plus être maintenu - dernier commit en 2016 ( github.com/winterDroid/… ), rapports de plantage sans aucune réponse ...
réduction de l'activité

67

Utilisez un service en ligne comme Image Baker .

boulanger de l'image

C'est simple. Téléchargez les images et téléchargez les ressources traitées pour Android et iOS.

Images téléchargées

Remarque: Image Baker est un service gratuit créé par mon ami et moi-même.


1
Ça marche pour moi. Je pense qu'il y a un widget de rétroaction que vous pouvez informer les développeurs du problème que vous rencontrez.
Asim KT

5
oui ça ne marche pas. il reste "téléchargement d'images"
batmaci

1
Ça marche. Puisqu'il s'agit d'un service gratuit, le serveur peut être lent. (tâche crone pour le nettoyage après 24 heures) Essayez à nouveau après une journée ou informez les développeurs.
Asim KT

Pourquoi la tâche cron est exécutée une fois 24 heures au lieu de l'exécuter plus souvent pour éviter qu'elle ne soit bloquée? Est-ce une limitation d'un service gratuit? Aussi, pourquoi il a "Nous avons besoin d'environ 100 $ / an pour exécuter le service" s'il fonctionne sur un serveur gratuit (coûts de développement?).
réduction de l'activité

1. C'est une limitation du service gratuit 2. S'il est gratuit, pas besoin d'argent. (uniquement les frais de domaine)
Asim KT

40

Un script bash utilisant ImageMagick (convert) selon la réponse de CommonsWare:

Ajout de la création de dossiers et de la vérification des arguments grâce à Kishan Vaghela

#!/bin/sh
#---------------------------------------------------------------
# Given an xxhdpi image or an App Icon (launcher), this script
# creates different dpis resources and the necessary folders
# if they don't exist
#
# Place this script, as well as the source image, inside res
# folder and execute it passing the image filename as argument
#
# Example:
# ./drawables_dpis_creation.sh ic_launcher.png
# OR
# ./drawables_dpis_creation.sh my_cool_xxhdpi_image.png
#
# Copyright (c) 2016 Ricardo Romao.
# This free software comes with ABSOLUTELY NO WARRANTY and
# is distributed under GNU GPL v3 license. 
#---------------------------------------------------------------

if [ $# -eq 0 ]; then
    echo "No arguments supplied"
else if [ -f "$1" ]; then
    echo " Creating different dimensions (dips) of "$1" ..."
    mkdir -p drawable-xxxhdpi
    mkdir -p drawable-xxhdpi
    mkdir -p drawable-xhdpi
    mkdir -p drawable-hdpi
    mkdir -p drawable-mdpi

    if [ $1 = "ic_launcher.png" ]; then
        echo "  App icon detected"
        convert ic_launcher.png -resize 144x144 drawable-xxhdpi/ic_launcher.png
        convert ic_launcher.png -resize 96x96 drawable-xhdpi/ic_launcher.png
        convert ic_launcher.png -resize 72x72 drawable-hdpi/ic_launcher.png
        convert ic_launcher.png -resize 48x48 drawable-mdpi/ic_launcher.png
        rm -i ic_launcher.png
    else
        convert $1 -resize 75% drawable-xxhdpi/$1
        convert $1 -resize 50% drawable-xhdpi/$1
        convert $1 -resize 38% drawable-hdpi/$1
        convert $1 -resize 25% drawable-mdpi/$1
        mv $1 drawable-xxxhdpi/$1
    fi
echo " Done"
else
    echo "$1 not found."
fi
fi

2
Script très utile! Quoi qu'il en soit, j'utiliserais 67% (au lieu de 66%) pour xhdpi. C'est parce que le rapport entre xhdpi et xxhdpi est 2/3, ce qui, en regardant en pourcentage et arrondi, donne 67. Sinon, si l'on utilise 66 et que la résolution de l'entrée est xxhdpi = 96 * 96, on obtiendrait xhdpi = 63 * 63 au lieu de 64 * 64.
HaimS

Nous devrions créer dir s'il n'est pas trouvé
Kishan Vaghela


Très utile et fonctionne bien. Je suppose que vous manquez un fi à la fin. Donne des erreurs sur bash 4.3.11
Mijo

Vous avez raison @Mijo, Kishan avait en fait ce dernier fi dans son esprit, et je l'ai retiré, idiot moi
rdromao

23

ÉDITER:

Le site Web s'appelle désormais appicon.co


J'utilise habituellement assets.codly.io
Il génère les actifs localement dans votre navigateur, pas de téléchargement, pas de téléchargement.

entrez la description de l'image ici


Il n'accepte que "l'image d'icône d'application (1024x1024" en entrée.
réduction de l'activité

2
@MateuszKonieczny Le site Web est mis à jour, Il y a un autre onglet pour les images appelé Ensembles d'images pour le reste des images.
A.Zidan

Pour Android, il ne génère que l'icône de l'application, c'est-à-dire manip Il génère également les icônes
dessinables

Quelle est la taille de votre base de conception dans ce site Web? Nous devons sélectionner 3x ou 4x ??
K Pradeep Kumar Reddy

13

Je viens de trouver un moyen simple de le faire dans le nouveau Android Studio:

entrez la description de l'image ici

entrez la description de l'image ici


KinhKohn, et quoi de plus? Pouvons-nous choisir une autre ressource?
CoolMind

Si vous souhaitez télécharger une image de votre choix, utilisez simplement l'option de navigation .. si c'est ce que vous voulez dire.
Kohn1001

Oui cela fonctionne. Mais il semble qu'il ne crée les icônes de couleur nécessaires que dans un type d'actif "Icônes de lancement". Ainsi, il remplace également une icône de lanceur. Et place les images dans des dossiers mipmap.
CoolMind

1
Notez qu'il ne convient que si vous souhaitez ajouter une icône.
réduction de l'activité

8

J'utilise un outil appelé Android Icon Set dans Eclipse pour les icônes standard comme Launcher, ActionBar, les icônes Tab et les icônes de notification. Vous pouvez le lancer depuis Fichier -> Nouveau -> Autre .. -> Android -> Jeu d'icônes Android. La meilleure partie est que vous pouvez choisir n'importe quel fichier de votre ordinateur et il placera automatiquement toutes les images de tailles standard dans votre répertoire de projet.

entrez la description de l'image ici


... vous pouvez également utiliser l'équivalent du site Web de cet outil: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (l'outil décrit dans cette réponse est meilleur, car il est intégré directement dans Eclipse , et placera automatiquement les icônes dans les dossiers appropriés).
Booger

Prend-il en charge les "icônes génériques"?
Ali Behzadian Nejad

L'outil Web semble le soutenir. Je n'ai pas encore utilisé le Web. Vous pouvez consulter ce lien: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi

7
  1. Utilisez simplement https://romannurik.github.io/AndroidAssetStudio/index.html . Il peut créer un ensemble d'icônes à partir d'une image, plus tard, vous pouvez télécharger un fichier zip.
  2. Ou téléchargez une application Windows sur https://github.com/redwarp/9-Patch-Resizer/releases (n'a pas besoin d'être installée) et ouvrez une icône.
  3. Vous pouvez également utiliser un plugin Android Drawable Importer, voir les réponses ci-dessus. Parce qu'il est abandonné, installez des fourches. Voir Pourquoi Android Drawable Importer ignore-t-il la sélection dans AS 3.5 ou https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .

2
Jusqu'à ce que l'auteur d' Android Drawable Importer cesse d'être AWOL, j'ai créé un zip d'installation provisoire pour les versions ultérieures du studio Android.
Bad Loser

@BadLoser, j'ai vu votre sujet, merci! J'utilise rarement ce plugin, il contient des bugs, donc s'ils se reproduisent, essayez votre solution.
CoolMind

Ouais - l'écriture est définitivement sur le mur pour cette vieille chose - mais pas avant qu'AS Resource Manager ne nettoie complètement son acte!
Bad Loser

4

Utiliser Android Studio Image Asset

Aller à:

 Project>res --> right click

 new> image asset

Réglez ensuite:

-Icon type: Launcher Icons
-Asset type: Image
-Path: the/path/to/your/image
-Trim: No
-Padding: 0%
-Shape: None
-Effect: None

Sélectionnez: Suivant> Terminer.

Now you will have your icon in the correct resolutions.

Exemple visuel:

EDIT: Je recommande d'utiliser des images SVG pour créer des dessins vectoriels, puis de les utiliser dans un canevas pour les redimensionner à la bonne taille ou simplement changer le DP.

Vous pouvez obtenir les icônes par défaut de Google ou simplement créer votre propre

 Project>res --> right click
 new> vector asset

Réglez ensuite:

-Asset type: Local file (SVG, PSD)
-Path: the/path/to/your/image
-Size: check Override to keep your aspect ratio.
-Chek enable auto mirroring for RTL Layout.

Sélectionnez: Suivant> Terminer.

Maintenant, vous aurez votre icône et vous pourrez changer la taille, la couleur, etc. entrez la description de l'image ici


2

Il existe également la possibilité d'utiliser le Vector Asset Studio en combinaison avec des graphiques vectoriels évolutifs (SVG) . Android Studio s'occupe du reste pour vous. Comme l'indique la documentation officielle :

Vector Asset Studio vous aide à ajouter des icônes de matériaux et à importer des fichiers SVG (Scalable Vector Graphic) dans votre projet d'application en tant que ressource dessinable. Comparés aux images raster, les éléments vectoriels à dessiner peuvent réduire la taille de votre application et être redimensionnés sans perte de qualité d'image. Ils vous aident à prendre en charge plus facilement différents appareils Android avec différentes tailles d'écran et résolutions, car vous pouvez afficher un vecteur dessinable sur chacun d'eux.

Je considère cela comme la future approche.

Entrée de menu de Vector Asset Studio

Capture d'écran de Vector Asset Studio


2

J'ai écrit un script Photoshop pour créer des fichiers png ic_launcher à partir d'un fichier PSD. Vérifiez simplement ic_launcher_exporter .

Pour l'utiliser, il suffit de le télécharger et d'utiliser le script de photoshop.

entrez la description de l'image ici

Et configurez où vous souhaitez générer des fichiers de sortie.

entrez la description de l'image ici


1

Pas 100% automatique, mais j'économise beaucoup de temps en utilisant Photoshop Actions .

Par exemple, étant donné les xhdpiactifs, je crée ensuite une tâche pour hdpiet mdpi, qui évolue à 66,66% et à 44,44% respectivement. Ensuite, j'exécute les actions pour toutes les images du dossier xhdpi.

Pour les images 512x512, tout ce que vous avez à faire est de calculer quel pourcentage devez-vous mettre à l'échelle vos images pour atteindre xxhpi, xhdpi, hdpi et mdpi.


0

J'ai utilisé la solution tout au long de ce fil, et c'est facile de travailler avec le plugin Android Drawable Importer

Si vous utilisez Android Studio sur MacOS, essayez simplement cette étape pour entrer:

  • Cliquez sur le menu de la barre Android Studio, puis choisissez Préférences ou appuyez sur le bouton Commande +,
  • Choisissez ensuite Plugins
  • Cliquez sur Parcourir les référentiels
  • Ecrire dans la recherche importateur Android Drawable coloumn
  • Cliquez sur le bouton Installer
  • Et puis la boîte de dialogue Redémarrer s'affiche, redémarrez-la simplement Android Studio

Après avoir réussi à installer le plug-in, pour le faire fonctionner, cliquez simplement sur Créer un nouveau menu, puis choisissez Importer par lots . Ensuite, cliquez sur le bouton plus aka bouton Ajouter, et allez choisir votre fichier à rendre dessinable. Et puis cliquez simplement sur ok et ok le dessinable a fait tout cela.

Si vous êtes confus avec ma parole, voyez simplement le tutoriel d'image de learningmechine .


2
Il n'y a plus de Android Drawable Importerplugin sur le marché. J'ai essayé Android Asset Importer but it crashesquand j'essaye de l'ouvrir (Android Studio 3.6.1). J'ai fini par utiliser appicon.co
flawyte

-1

Un simple plugin dans Android vous aidera Étape 1. Allez dans Paramètres Étape 2. Cliquez sur Plugin Étape 3. Recherchez Importateur Android Drawable Étape 4. Installez le plugin et redémarrez

Comment utiliser?

Allez dans Fichier> Nouveau> Importation par lots de dessins

Prendre plaisir


Il n'y a Android Drawable Importerplus de plugin sur la place de marché Android Studio.
Micer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.