¿Hay alguna forma de crear dibujos dibujables xxhdpi, xhdpi, hdpi, mdpi y ldpi a partir de una imagen a gran escala?

271

¿Hay alguna manera de crear dibujos dibujables xxhdpi, xhdpi, hdpi, mdpi y ldpi a partir de una imagen a gran escala automáticamente? Por ejemplo, suponga que tengo una imagen de 512x512 y quiero tener diferentes versiones de estas imágenes para diferentes resoluciones de pantalla compatibles con Android en las carpetas apropiadas.

Ali Behzadian Nejad
fuente
3
En caso de que esté en Windows: github.com/delight-im/AndroidDrawableResizer
caw
Hice esta herramienta en Android, pones tu imagen en la carpeta de descarga de tu teléfono, luego seleccionas un tamaño de referencia y dpi, y se convierte a todas las densidades y crea las carpetas apropiadas: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun
Verifique esta respuesta para obtener un método rápido y fácil - stackoverflow.com/a/40830399/4015856
Asim KT
44
En Android Studio, haga clic derecho en res -> New -> Image Asset, elijaLauncher Icons (legacy)
onmyway133

Respuestas:

191

Opción n. ° 1: simplemente envíe los elementos -xxhdpiextraíbles y deje que Android los reduzca en el tiempo de ejecución (inconveniente: solo funcionará en dispositivos bastante recientes, donde -xxhdpise sabe).

Opción n. ° 2: use Android Asset Studio para reducir la muestra por usted

Opción n. ° 3: Automatice el proceso dentro de un editor de gráficos, según la respuesta de ssantos .

Opción # 4: Escríbete una solución, usando algo como ImageMagick.

Opción # 5: usar imagen panadero

CommonsWare
fuente
¿Es el envío solo xxhdpi y xhdpi una alternativa? Supongo que los dispositivos que no entienden xxhdpi se reducirán de xhdpi
Juan Campa
@Juan: "¿Es el envío solo xxhdpi y xhdpi una alternativa?" - solo si tu minSdkVersiones 8 o superior. Si está tratando de admitir dispositivos más antiguos que eso, también necesitará hdpiuno, ya que xhdpini xxhdpiexistía ni existía para el nivel 7 de API o inferior. Ahora, si te gusta el aspecto de tus dibujos extraíbles muestreados es algo completamente diferente ...
CommonsWare
Con respecto a la Opción # 1 y sus comentarios sobre xxhdpino existir, no creo que esto sea correcto. Internamente, Android usa números DPI (160, 320, 480, etc.), no cadenas, para los calificadores de recursos. Si el DPI del sistema es 160 y encuentra una imagen 640, la reducirá a 4, sin necesidad de "conocer" su calificador textual. Hemos enviado recursos que solo existen en la xxxhdpicarpeta (Android 4.3) a dispositivos Android 2.3.
Matt Quigley
la opción 2 no es compatible con xxxhdpi
Nombre para mostrar
2
Opción # 4: solución de script con ImageMagick aquí
rdromao
158

Actualización :

El complemento mencionado anteriormente ha sido abandonado, pero aparentemente tiene una bifurcación actualizada aquí .

Vieja respuesta :

Yo uso el complemento de Android Studio llamado Android Drawable Importer:

ingrese la descripción de la imagen aquí

Para usarlo después de la instalación, haga clic derecho en su carpeta res / drawable y seleccione New > Batch Drawable Import:

Luego seleccione su imagen a través del +botón y configure la Resolución en xxhdpi (o cualquiera que sea la resolución de su imagen de origen).

Adam Johns
fuente
13
Gracias, pero he usado "Importación por lotes" en lugar de "Escalable".
Malder
Como @ user123456 dice que tuve que usar Batch Drawable porque Scaled Drawable no apareció
lujop
1
Parece que este complemento ya no se mantiene: última confirmación en 2016 ( github.com/winterDroid/… ), informes de fallas sin ninguna respuesta ...
reducción de la actividad
3
Logré resucitar este adorable complemento en AS 3.6 y posiblemente, aunque no probado, también en AS 3.5.
Bad Loser
2
@PrajwalW, respuesta actualizada para mencionar la bifurcación actualizada.
Adam Johns
97

Actualizar:

La antigua forma de instalar el complemento ya no funciona, pero una bifurcación del complemento original todavía funciona aquí . Todavía puede seguir esta respuesta después de instalar el complemento manualmente.

Si desea una forma rápida y fácil, visite https://www.img-bak.in/ o https://appicon.co/, también funcionan con iOS.

Trataré de explicar el proceso paso a paso, de modo que sea fácil de entender para cualquiera.

1. Instale el complemento manualmente como se proporciona en el archivo ReadME

2. Reinicie android studio

3. Como puede ver en la siguiente captura de pantalla, solo hay una que se puede dibujar aquí

ingrese la descripción de la imagen aquí

4. Ahora haga clic derecho en la carpeta dibujable y navegue a Nuevo> Importación dibujable por lotes

ingrese la descripción de la imagen aquí

8. Ahora haz clic en el ícono agregar

5. Ahora seleccione la imagen "individual" que desea diferentes variaciones de dibujos.

ingrese la descripción de la imagen aquí

6. Ahora seleccione de qué dimensión es la imagen de origen. Si la imagen de origen es xxhdpi como en mi caso, seleccione "xxhdpi" como "Fuente de revelación".

7. Ahora presione ok y luego ok nuevamente ... y luego tomará unos segundos y luego obtendrá mágicamente todas las variables de los dibujos.ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

erluxman
fuente
3
Este complemento es bueno, pero el tamaño original debe tener suficiente resolución para mantener una buena calidad para el activo. Supongo que es mejor pedirle al diseñador los activos xxxhdpi inicialmente y luego reducirlos.
narko
@LaxmanBhattarai, quiero admitir mi aplicación en solo paisaje en solo tableta. Entonces, según su respuesta, ¿qué carpeta dibujable debo para las imágenes para admitir todos los dispositivos de tableta? ¿Me puede decir por favor?
Hiren Patel
developer.android.com/training/basics/supporting-devices/… consulte este documento y creo que agregar -land al final de cualquier carpeta puede
generar un
La opción "Icon Pack Drawable Importer" utiliza iconos de Material / Android y está resuelta para mí. Gracias por el consejo @LaxmanBhattarai
Francis Rodrigues
1
Parece que este complemento ya no se mantiene: última confirmación en 2016 ( github.com/winterDroid/… ), informes de fallas sin ninguna respuesta ...
reducción de la actividad
67

Use un servicio en línea como Image Baker .

panadero de imagen

Es sencillo. Cargue las imágenes y descargue los activos procesados ​​tanto para Android como para iOS.

Imágenes descargadas

Nota: Image Baker es un servicio gratuito creado por mi amigo y yo.

Asim KT
fuente
1
Me esta funcionando. Creo que hay un widget de comentarios que puedes decirles a los desarrolladores sobre el problema que estás enfrentando.
Asim KT
55
Sí, no está funcionando. sigue siendo "cargando imágenes"
batmaci
1
Esta funcionando. Dado que es un servidor de servicio gratuito, puede ser lento. (trabajo de limpieza para limpiar después de 24 horas) Vuelva a intentarlo después de un día o informe a los desarrolladores.
Asim KT
¿Por qué el trabajo cron se ejecuta una vez 24 horas en lugar de ejecutarlo con más frecuencia para evitar que se atasque? ¿Es una limitación de un servicio gratuito? Además, ¿por qué tiene "Necesitamos alrededor de $ 100 / año para ejecutar el servicio" si se ejecuta en un servidor gratuito (¿costos de desarrollo?).
reducción de actividad
1. Es una limitación del servicio gratuito 2. Si es gratis no hay necesidad de dinero. (solo el cargo de dominio)
Asim KT
40

Un script bash usando ImageMagick (convertir) según la respuesta de CommonsWare:

Se agregó la creación de carpetas y la verificación de argumentos gracias a 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
rdromao
fuente
2
Script muy útil! De todos modos, usaría 67% (en lugar de 66%) para xhdpi. Esto se debe a que la relación entre xhdpi y xxhdpi es 2/3, que cuando se mira en porcentaje y se redondea da 67. De lo contrario, si uno usa 66 y dice que la resolución de la entrada es xxhdpi = 96 * 96, se obtendría xhdpi = 63 * 63 en lugar de 64 * 64.
HaimS
Deberíamos crear dir si no se encuentra
Kishan Vaghela
Compruebe el script actualizado gist.github.com/Kishanjvaghela/8ec54f66c322d8d6940b4c0d1a58098d
Kishan Vaghela
Muy útil y funciona bien. Supongo que te estás perdiendo un fi al final. Da errores en bash 4.3.11
Mijo
Tienes razón @Mijo, Kishan tenía ese último problema en su esencia, y lo
eliminé
23

EDITAR:

El sitio web ahora se llama appicon.co


Usualmente uso assets.codly.io
Genera los activos localmente en su navegador, sin carga, sin descarga.

ingrese la descripción de la imagen aquí

A.Zidan
fuente
Solo acepta "imagen de icono de la aplicación (1024x1024" como entrada.
reducción de la actividad
2
@MateuszKonieczny El sitio web se actualiza. Hay otra pestaña para las imágenes llamada Conjuntos de imágenes para el resto de las imágenes.
A.Zidan
Para Android solo genera el ícono de la aplicación, es decir, manip. También genera los íconos
dibujables
¿Qué es seleccionar el tamaño base de su diseño en ese sitio web? Deberíamos seleccionar 3x o 4x ??
K Pradeep Kumar Reddy
13

Acabo de encontrar una manera fácil de hacerlo en el nuevo Android Studio:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Kohn1001
fuente
KinhKohn, y qué más? ¿Podemos elegir otro recurso?
CoolMind
Si desea cargar cualquier imagen que desee, simplemente use la opción de navegación ... si esto es lo que quiere decir.
Kohn1001
Si, funciona. Pero parece que solo necesita los iconos de color en un tipo de activo "Iconos de iniciador". Por lo tanto, también reemplaza un icono de iniciador. Y pone imágenes en carpetas mipmap.
CoolMind
1
Tenga en cuenta que solo es adecuado si desea agregar un icono.
Reducción de la actividad
8

Utilizo una herramienta llamada Android Icon Set en Eclipse para iconos estándar como Launcher, ActionBar, iconos de tabulación e iconos de notificación. Puede iniciarlo desde Archivo -> Nuevo -> Otro .. -> Android -> Conjunto de iconos de Android. La mejor parte es que puede elegir cualquier archivo de su computadora y colocará automáticamente todas las imágenes de tamaños estándar en el directorio de su proyecto.

ingrese la descripción de la imagen aquí

Nitin Sethi
fuente
... también puede utilizar el sitio web equivalente de esta herramienta: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (la herramienta descrita en esta respuesta es mejor, ya que está integrada directamente en Eclipse , y colocará automáticamente los iconos en las carpetas correctas).
Booger
¿Es compatible con "iconos genéricos"?
Ali Behzadian Nejad
La herramienta web parece ser compatible. Sin embargo, tampoco he usado la web. Puede consultar este enlace: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi
7
  1. Simplemente use https://romannurik.github.io/AndroidAssetStudio/index.html . Puede crear un conjunto de iconos a partir de una imagen, luego puede descargar un archivo zip.
  2. O descargue una aplicación de Windows en https://github.com/redwarp/9-Patch-Resizer/releases (no necesita instalar) y abra un icono.
  3. También puede usar un complemento Android Drawable Importer, consulte las respuestas anteriores. Debido a que está abandonado, instale horquillas. Consulte ¿Por qué Android Drawable Importer ignora la selección en AS 3.5 en adelante o https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin ?
  4. https://appicon.co/#image-sets .
CoolMind
fuente
2
Hasta que el autor de Android Drawable Importer deje de ser AWOL, he eliminado un zip de instalación provisional para versiones posteriores de Android Studio.
Bad Loser
@BadLoser, vi tu tema, ¡gracias! Raramente uso este complemento, contiene algunos errores, por lo que si vuelven a ocurrir, probaré su solución.
CoolMind
Sí, la escritura definitivamente está en la pared para esta cosa vieja, ¡pero no hasta que AS Resource Manager limpie completamente su acto!
Bad Loser
4

Utilice el activo de imagen de Android Studio

Ir:

 Project>res --> right click

 new> image asset

Luego establezca:

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

Seleccione: Siguiente> Finalizar.

Now you will have your icon in the correct resolutions.

Ejemplo visual:

EDITAR: Recomiendo usar imágenes SVG para crear Vector Drawables, y luego usarlas en un lienzo para cambiar su tamaño al tamaño correcto o simplemente cambiar el DP.

Puede obtener los iconos predeterminados de Google o simplemente crear su propio

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

Luego establezca:

-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.

Seleccione: Siguiente> Finalizar.

Ahora tendrá su icono y podrá cambiar el tamaño, el color, etc. ingrese la descripción de la imagen aquí

CarLoOSX
fuente
2

También existe la posibilidad de usar Vector Asset Studio en combinación con Gráficos Vectoriales Escalables (SVG) . Android Studio se encargará del resto por ti. Como dice la documentación oficial :

Vector Asset Studio lo ayuda a agregar íconos de material e importar archivos de Gráficos Vectoriales Escalables (SVG) en su proyecto de aplicación como un recurso dibujable. En comparación con las imágenes ráster, los dibujos vectoriales pueden reducir el tamaño de su aplicación y cambiar su tamaño sin pérdida de calidad de imagen. Le ayudan a admitir más fácilmente diferentes dispositivos Android con diferentes tamaños de pantalla y resoluciones porque puede mostrar un vector dibujable en todos ellos.

Considero que este es el enfoque futuro.

Entrada de menú de Vector Asset Studio

Captura de pantalla de Vector Asset Studio

Paul Spiesberger
fuente
2

Escribí un script de Photoshop para crear archivos png ic_launcher a partir del archivo PSD. Solo verifique ic_launcher_exporter .

Para usarlo, simplemente descárguelo y use el script de Photoshop.

ingrese la descripción de la imagen aquí

Y configure dónde desea generar archivos de salida.

ingrese la descripción de la imagen aquí

xcesco
fuente
1

No es 100% automático, pero ahorro mucho tiempo con Photoshop Actions .

Por ejemplo, dados los xhdpiactivos, entonces creo una tarea para hdpiy mdpi, que se escala al 66.66% y al 44.44% respectivamente. Luego ejecuto las acciones para todas las imágenes en la carpetaxhdpi .

Para las imágenes de 512x512, todo lo que tiene que hacer es calcular qué porcentaje debe escalar sus imágenes para lograr xxhpi, xhdpi, hdpi y mdpi.

ssantos
fuente
0

Tuve que usar la solución todo este camino en este hilo, y es fácil trabajar con el complemento Android Drawable Importer

Si usa Android Studio en MacOS, solo intente este paso para ingresar:

  • Haga clic en el menú de la barra de Android Studio y luego elija Preferencias o toque el botón Comando +,
  • Luego elija Complementos
  • Haga clic en Examinar repositorios
  • Escriba en la búsqueda coloumn Android Drawable Importer
  • Haga clic en el botón Instalar
  • Y luego aparece el cuadro de diálogo Reiniciar, solo reinicie Android Studio

Después de su éxito al instalar el complemento, para que funcione este complemento, simplemente haga clic en crear nuevo menú y luego elija Importar por lotes para dibujar . Luego haga clic en el botón más, también conocido como botón Agregar, y elija su archivo para dibujar. Y luego simplemente haga clic en ok y ok, el dibujable los ha convertido en todos.

Si te confundes con mi palabra, solo mira el tutorial de imagen de learningmechine .

Uray Febri
fuente
2
Ya no hay Android Drawable Importercomplementos en el mercado. Intenté Android Asset Importer but it crashescuando intento abrirlo (Android Studio 3.6.1). Terminé usando appicon.co
flawyte
-1

Un complemento simple en Android lo ayudará Paso 1. Vaya a Configuración Paso 2. Haga clic en Complemento Paso 3. Busque Importador de Android Drawable Paso 4. Instale el complemento y reinicie

¿Cómo utilizar?

Vaya a Archivo> Nuevo> Importación por lotes dibujable

Disfrutar

Hemant Maurya
fuente
Android Drawable ImporterYa no hay complementos en el mercado de Android Studio.
Micer