C'è un modo per creare disegni estraibili xxhdpi, xhdpi, hdpi, mdpi e ldpi da un'immagine su larga scala?


271

Esiste un modo per creare automaticamente disegni estraibili xxhdpi, xhdpi, hdpi, mdpi e ldpi da un'immagine su larga scala? Ad esempio supponiamo che io abbia un'immagine 512x512 e voglio avere versioni diverse di queste immagini per diverse risoluzioni dello schermo supportate da Android in cartelle appropriate.


3
Nel caso in cui ti trovi su Windows: github.com/delight-im/AndroidDrawableResizer
caw

Ho fatto questo strumento su Android, hai messo la tua foto nella cartella di download del tuo telefono, quindi seleziona una dimensione di riferimento e dpi, si converte in tutte le densità e crea le cartelle appropriate: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun

Controlla questa risposta per un metodo semplice e veloce - stackoverflow.com/a/40830399/4015856
Asim KT

4
In Android Studio, fai clic con il pulsante destro del mouse res -> New -> Image Asset, scegliLauncher Icons (legacy)
onmyway133,

Risposte:


191

Opzione n. 1: -xxhdpispedisci semplicemente i disegni e lascia che Android li esegua il downsamping in fase di esecuzione (svantaggio: funzionerà solo su dispositivi abbastanza recenti, dove -xxhdpiè noto).

Opzione n. 2: usa Android Asset Studio per ricampionarli per te.

Opzione n. 3: automatizza il processo all'interno di un editor grafico, per risposta di ssantos .

Opzione n. 4: Script te stesso una soluzione, usando qualcosa come ImageMagick.

Opzione n. 5: utilizzare il panettiere immagine


La spedizione è solo xxhdpi e xhdpi un'alternativa? Suppongo che i dispositivi che non comprendono xxhdpi ridurranno da xhdpi
Juan Campa,

@Juan: "La spedizione è solo xxhdpi e xhdpi un'alternativa?" - solo se hai minSdkVersion8 anni o più. Se si sta cercando di supportare i dispositivi più vecchio di quello, avrete anche bisogno di un hdpiuno, né come xhdpi, né xxhdpiesiste da API Livello 7 e al di sotto. Ora, se ti piace l'aspetto dei tuoi drawable sottocampionati è un'altra cosa del tutto ...
CommonsWare

Per quanto riguarda l'opzione n. 1 e i tuoi commenti xxhdpiinesistenti, non credo sia corretto. Internamente, Android utilizza numeri DPI (160, 320, 480, ecc.), Non stringhe, per i qualificatori di risorse. Se il DPI di sistema è 160 e trova un'immagine 640, la ridimensionerà di 4, senza bisogno di "conoscere" il suo qualificatore testuale. Abbiamo inviato risorse che esistono solo nella xxxhdpicartella (Android 4.3) ai dispositivi Android 2.3.
Matt Quigley,

l'opzione 2 non supporta xxxhdpi
Visualizza nome

2
Opzione n. 4: soluzione di script con ImageMagick qui
rdromao,

158

Aggiornamento :

Il plugin menzionato in precedenza è stato abbandonato, ma a quanto pare ha un fork aggiornato qui .

Vecchia risposta :

Uso il plug-in Android Studio chiamato Android Drawable Importer:

inserisci qui la descrizione dell'immagine

Per usarlo dopo l'installazione, fare clic con il tasto destro sulla cartella res / drawable e selezionare New > Batch Drawable Import:

Quindi seleziona l'immagine tramite il +pulsante e imposta la risoluzione su xxhdpi (o qualunque sia la risoluzione dell'immagine sorgente).


13
Grazie, ma ho usato 'Importazione estraibile in batch' anziché 'Disegnabile in scala'.
Malder,

Come @utente123456 dice che dovevo usare Batch Drawable perché non è stato visualizzato il
disegno in scala

1
Questo plugin sembra non essere più mantenuto - ultimo commit nel 2016 ( github.com/winterDroid/… ), rapporti sugli arresti anomali senza alcuna risposta ...
riduzione dell'attività

3
Sono riuscito a resuscitare questo adorabile plugin in AS 3.6 e possibilmente, anche se non testato, anche in AS 3.5.
Cattivo perdente il

2
@PrajwalW, risposta aggiornata per menzionare il fork aggiornato.
Adam Johns,

97

Aggiornare:

Il vecchio modo di installare il plugin non funziona più, ma un fork di plugin originale è ancora funzionante qui . Puoi ancora seguire questa risposta dopo aver installato il plug-in manualmente.

Se vuoi un modo semplice e veloce visita https://www.img-bak.in/ o https://appicon.co/ funzionano anche con iOS.

Proverò a spiegare il processo in modo saggio, in modo che sia semplice da capire a chiunque.

1. Installa il plug-in manualmente come indicato nel file ReadME

2. Riavvia Android Studio

3. Come puoi vedere nel seguente screencap, qui c'è solo un disegno

inserisci qui la descrizione dell'immagine

4. Ora fai clic con il pulsante destro del mouse sulla cartella dei disegni e vai su Nuovo> Importazione dei disegni in batch

inserisci qui la descrizione dell'immagine

8. Ora fai clic sull'icona Aggiungi

5. Ora seleziona "la singola" immagine che desideri diverse varianti di disegni.

inserisci qui la descrizione dell'immagine

6. Ora seleziona quale dimensione è l'immagine di origine. Se l'immagine di origine è xxhdpi come nel mio caso, selezionare "xxhdpi" come "Resoultion sorgente".

7. Ora premi ok poi di nuovo ok .. e poi ci vorranno alcuni secondi e otterrai magicamente tutte le variabili dei disegni.inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


3
Questo plugin è buono, ma le dimensioni originali devono avere una risoluzione sufficiente per mantenere una buona qualità per l'asset. Immagino sia meglio chiedere inizialmente al progettista risorse xxxhdpi e poi ridurle.
narko,

@LaxmanBhattarai, voglio supportare la mia applicazione solo in orizzontale solo su tablet. Quindi, secondo la tua risposta quale cartella disegnabile dovrei per le immagini al fine di supportare tutti i dispositivi tablet? Per favore, potresti farmelo sapere ?
Hiren Patel,

developer.android.com/training/basics/supporting-devices/… si prega di fare riferimento a questo documento e penso che l'aggiunta di -land alla fine di qualsiasi cartella possa comportare un layout orizzontale
erluxman,

L'opzione "Icon Pack Drawable Importer" utilizza icone Materiale / Android e mi ha risolto. Grazie per la segnalazione @LaxmanBhattarai
Francis Rodrigues

1
Questo plugin sembra non essere più mantenuto - ultimo commit nel 2016 ( github.com/winterDroid/… ), rapporti sugli arresti anomali senza alcuna risposta ...
riduzione dell'attività

67

Utilizza un servizio online come Image Baker .

panettiere di immagine

È semplice. Carica le immagini e scarica le risorse elaborate per Android e iOS.

Immagini scaricate

Nota: Image Baker è un servizio gratuito creato da me e dal mio amico.


1
Funziona per me. Penso che ci sia un widget di feedback che puoi dire agli sviluppatori del problema che stai affrontando.
Asim KT,

5
si non funziona. rimane "upload di immagini"
batmaci il

1
Sta funzionando. Dal momento che è un server di servizio gratuito potrebbe essere lento. (lavoro normale per la pulizia dopo 24 ore) Riprovare dopo un giorno o informare gli sviluppatori.
Asim KT,

Perché cron job viene eseguito una volta 24 ore invece di eseguirlo più spesso per evitare che si blocchi? È una limitazione di un servizio gratuito? Inoltre, perché ha "Abbiamo bisogno di circa $ 100 / anno per l'esecuzione del servizio" se è in esecuzione su un server gratuito (costi di sviluppo?).
riduzione dell'attività

1. È una limitazione del servizio gratuito 2. Se è gratuito non è necessario denaro. (solo il costo del dominio)
Asim KT

40

Uno script bash che utilizza ImageMagick (convert) secondo la risposta di CommonsWare:

Aggiunta la creazione di cartelle e controllo degli argomenti grazie 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

2
Script molto utile! Ad ogni modo, userei il 67% (anziché il 66%) per xhdpi. Questo perché il rapporto tra xhdpi e xxhdpi è 2/3 che se guardato in percentuale e arrotondato dà 67. Altrimenti, se uno usa 66 e dice che la risoluzione dell'input è xxhdpi = 96 * 96, si otterrebbe xhdpi = 63 * 63 invece di 64 * 64.
Haim

Dovremmo creare dir se non trovato
Kishan Vaghela,


Molto utile e funziona bene. Immagino che ti manchi un fi alla fine. Fornisce errori su bash 4.3.11
Mijo

Hai ragione @Mijo, Kishan aveva in realtà quell'ultimo fi nel suo istinto, e l'ho rimosso, sciocco me
rdromao

23

MODIFICARE:

Il sito Web ora si chiama appicon.co


Di solito uso assets.codly.io
Genera le risorse localmente nel tuo browser, nessun caricamento, nessun download.

inserisci qui la descrizione dell'immagine


Accetta solo "immagine icona app (1024x1024" come input.
dell'attività

2
@MateuszKonieczny Il sito web è aggiornato, c'è un'altra scheda per le immagini chiamata Set di immagini per il resto delle immagini.
A.Zidan,

Per Android genera solo un'icona dell'app, cioè manipola Inoltre genera le icone disegnabili
Nivrutti Pawar

Qual è selezionare la dimensione della base del design in quel sito Web ?? Dovremmo selezionare 3x o 4x ??
K Pradeep Kumar Reddy,

13

Ho appena trovato un modo semplice per farlo nel nuovo Android Studio:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


KinhKohn, e che altro? Possiamo scegliere un'altra risorsa?
CoolMind,

Se vuoi caricare un'immagine che vuoi, basta usare l'opzione di navigazione .. se questo è ciò che intendi.
Kohn1001,

Sì funziona. Ma sembra che renda le icone di colore necessarie solo in un tipo di risorsa "Icone di avvio". Quindi, sostituisce anche un'icona di avvio. E mette le immagini nelle cartelle mipmap.
CoolMind

1
Si noti che è adatto solo se si desidera aggiungere un'icona.
riduzione dell'attività

8

Uso uno strumento chiamato Set di icone Android in Eclipse per icone standard come Launcher, ActionBar, Tab e icone di notifica. Puoi avviarlo da File -> Nuovo -> Altro .. -> Android -> Set di icone Android. La parte migliore è che puoi scegliere qualsiasi file dal tuo computer e inserirà automaticamente tutte le immagini di dimensioni standard nella directory del tuo progetto.

inserisci qui la descrizione dell'immagine


... puoi anche usare l'equivalente del sito Web di questo strumento: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (lo strumento descritto in questa risposta è migliore, poiché è integrato direttamente in Eclipse e posizionerà automaticamente le icone nelle cartelle corrette).
Booger,

Supporta "Icone generiche"?
Ali Behzadian Nejad,

Lo strumento Web sembra supportarlo. Non ho usato troppo il Web però. Puoi dare un'occhiata a questo link: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi

7
  1. Basta usare https://romannurik.github.io/AndroidAssetStudio/index.html . Può creare un set di icone da un'immagine, in seguito è possibile scaricare un file zip.
  2. Oppure scarica un'applicazione Windows su https://github.com/redwarp/9-Patch-Resizer/releases (non è necessario installarla) e apri un'icona.
  3. Inoltre puoi usare un plugin Android Drawable Importer, vedi le risposte sopra. Poiché è abbandonato, installare le forcelle. Scopri perché Android Drawable Importer ignora la selezione in AS 3.5 o https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .

2
Fino a quando l'autore di Android Drawable Importer non smette di essere AWOL, ho eliminato una zip di installazione temporanea per le versioni successive di Android Studio.
Cattivo perdente il

@BadLoser, ho visto il tuo argomento, grazie! Uso raramente questo plugin, contiene alcuni bug, quindi se si verificano di nuovo, proverò la tua soluzione.
CoolMind

Sì - la scritta è decisamente sul muro per questa vecchia cosa - ma non fino a quando AS Resource Manager non ripulirà completamente la sua azione!
Cattivo perdente il

4

Usa risorse immagine di Android Studio

Vai a:

 Project>res --> right click

 new> image asset

Quindi impostare:

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

Selezionare: Avanti> Fine.

Now you will have your icon in the correct resolutions.

Esempio visivo:

MODIFICA: Consiglio di utilizzare le immagini SVG per creare disegni vettoriali, quindi utilizzarli in un'area di disegno per ridimensionarli alla dimensione corretta o semplicemente modificare il DP.

Puoi ottenere le icone predefinite da Google o semplicemente creare le tue

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

Quindi impostare:

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

Selezionare: Avanti> Fine.

Ora avrai la tua icona e potrai cambiare dimensione, colore ecc. inserisci qui la descrizione dell'immagine


2

C'è anche la possibilità di utilizzare Vector Asset Studio in combinazione con la grafica vettoriale scalabile (SVG) . Android Studio gestirà il resto per te. Come dice la documentazione ufficiale :

Vector Asset Studio ti aiuta ad aggiungere icone di materiali e importare file SVG (Scalable Vector Graphic) nel tuo progetto di app come risorsa disegnabile. Rispetto alle immagini raster, i disegni estraibili vettoriali possono ridurre le dimensioni della tua app e ridimensionare senza perdita di qualità dell'immagine. Ti aiutano a supportare più facilmente diversi dispositivi Android con dimensioni dello schermo e risoluzioni diverse perché puoi visualizzare un disegno vettoriale su tutti.

Considero questo l'approccio futuro.

Voce di menu di Vector Asset Studio

Schermata di Vector Asset Studio


2

Ho scritto uno script di Photoshop per creare file png ic_launcher da file PSD. Basta controllare ic_launcher_exporter .

Per usarlo, basta scaricarlo e utilizzare lo script da Photoshop.

inserisci qui la descrizione dell'immagine

E configura dove vuoi generare i file di output.

inserisci qui la descrizione dell'immagine


1

Non automatico al 100%, ma risparmio molto tempo usando Photoshop Actions .

Ad esempio, dati gli xhdpiasset, creo quindi un'attività per hdpie mdpi, che si ridimensiona rispettivamente al 66,66% e al 44,44%. Quindi eseguo le azioni per tutte le immagini nella cartellaxhdpi .

Per le immagini 512x512, tutto ciò che devi fare è calcolare quale percentuale dovresti ridimensionare le immagini per ottenere xxhpi, xhdpi, hdpi e mdpi.


0

In questo thread ho utilizzato la soluzione in questo modo ed è facile lavorare con il plug-in Android Drawable Importer

Se usi Android Studio su MacOS, prova questo passaggio per entrare:

  • Fai clic sul menu della barra di Android Studio, quindi scegli Preferenze o tocca il pulsante Comando +,
  • Quindi scegli Plugin
  • Fai clic su Sfoglia repository
  • Scrivi nella colonna di ricerca Android Drawable Importer
  • Fai clic sul pulsante Installa
  • E poi viene visualizzata la finestra di dialogo Riavvia, basta riavviarlo Android Studio

Dopo aver completato l'installazione del plug-in, per farlo funzionare basta fare clic su Crea nuovo menu e quindi selezionare Importa in batch estraibile . Quindi fai clic sul pulsante più noto anche come pulsante Aggiungi e vai a scegliere il tuo file per renderlo disegnabile. E poi basta fare clic su ok e ok il drawable li ha fatti tutti.

Se sei confuso con la mia parola, basta vedere il tutorial di immagini da learningmechine .


2
Non ci sono più Android Drawable Importerplugin sul mercato. Ho provato a Android Asset Importer but it crashesquando provo ad aprirlo (Android Studio 3.6.1). Ho finito per usare appicon.co
flawyte il

-1

Un semplice plug-in per Android ti aiuterà Passaggio 1. Vai a Impostazioni Passaggio 2. Fai clic su Plugin Passaggio 3. Cerca Android Drawable Importer Passaggio 4. Installa plug-in e riavvia

Come usare?

Vai a File> Nuovo> Importazione estraibile in batch

Godere


Non ci sono più Android Drawable Importerplugin nel marketplace di Android Studio.
Micer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.