Gibt es eine Möglichkeit, aus einem großformatigen Bild xxhdpi-, xhdpi-, hdpi-, mdpi- und ldpi-Zeichen zu erstellen?


271

Gibt es eine Möglichkeit, aus einem großformatigen Bild automatisch xxhdpi-, xhdpi-, hdpi-, mdpi- und ldpi-Zeichen zu erstellen? Angenommen, ich habe ein 512 x 512-Bild und möchte verschiedene Versionen dieser Bilder für verschiedene Bildschirmauflösungen, die von Android unterstützt werden, in entsprechenden Ordnern haben.


3
Für den Fall, dass Sie unter Windows arbeiten: github.com/delight-im/AndroidDrawableResizer
caw

Ich habe dieses Tool unter Android ausgeführt. Sie haben Ihr Bild in den Download-Ordner Ihres Telefons gelegt, dann eine Referenzgröße und dpi ausgewählt und es wird in alle Dichten konvertiert und die entsprechenden Ordner erstellt: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun

Überprüfen Sie diese Antwort für eine schnelle und einfache Methode - stackoverflow.com/a/40830399/4015856
Asim KT

4
In Android Studio mit der rechten klicken Sie auf res -> New -> Image Asset, wählenLauncher Icons (legacy)
onmyway133

Antworten:


190

Option 1: -xxhdpiVersenden Sie die Drawables einfach und lassen Sie sie zur Laufzeit von Android heruntertasten (Nachteil: funktioniert nur auf relativ neuen Geräten, sofern -xxhdpibekannt).

Option 2: Verwenden Sie Android Asset Studio, um sie für Sie herunterzusampeln.

Option 3: Automatisieren Sie den Prozess in einem Grafikeditor gemäß der Antwort von ssantos .

Option 4: Schreiben Sie sich eine Lösung mit ImageMagick.

Option 5: Verwenden Sie Image Baker


Ist der Versand nur xxhdpi und xhdpi eine Alternative? Ich gehe davon aus, dass Geräte, die xxhdpi nicht verstehen, von xhdpi
Juan Campa

@Juan: "Ist der Versand nur xxhdpi und xhdpi eine Alternative?" - Nur wenn Sie minSdkVersion8 oder höher sind. Wenn Sie versuchen, ältere Geräte zu unterstützen, benötigen Sie auch hdpieines, da es für API Level 7 und niedriger weder vorhanden xhdpinoch xxhdpivorhanden war. Nun, ob Sie das Aussehen Ihrer heruntergerechneten Drawables mögen, ist eine ganz andere Sache ...
CommonsWare

In Bezug auf Option 1 und Ihre Kommentare zu xxhdpinicht vorhandenen Optionen glaube ich nicht, dass dies korrekt ist. Intern verwendet Android DPI-Nummern (160, 320, 480 usw.) und keine Zeichenfolgen für die Ressourcenqualifizierer. Wenn die System-DPI 160 beträgt und ein 640-Bild gefunden wird, wird es um 4 heruntergerechnet, ohne dass das Textqualifikationsmerkmal "bekannt" sein muss. Wir haben Ressourcen, die nur im xxxhdpiOrdner (Android 4.3) vorhanden sind, an Android 2.3-Geräte gesendet.
Matt Quigley

Option 2 unterstützt xxxhdpi nicht
Anzeigename

2
Option 4:
Skriptlösung

158

Update :

Das Plugin zuvor erwähnt wurde aufgegeben, aber es hat offenbar eine up-to-date Gabel hier .

Alte Antwort :

Ich benutze das Android Studio Plugin mit dem Namen Android Drawable Importer:

Geben Sie hier die Bildbeschreibung ein

Um es nach der Installation zu verwenden, klicken Sie mit der rechten Maustaste auf Ihren res / drawable-Ordner und wählen Sie New > Batch Drawable Import:

+Wählen Sie dann Ihr Bild über die Schaltfläche aus und stellen Sie die Auflösung auf xxhdpi ein (oder unabhängig von der Auflösung Ihres Quellbilds).


13
Danke, aber ich habe 'Batch Drawable Import' anstelle von 'Scaled Drawable' verwendet.
Malder

Wie @ user123456 sagt, musste ich Batch Drawable verwenden, weil Scaled Drawable nicht
angezeigt wurde

1
Dieses Plugin scheint nicht mehr gewartet zu werden - letztes Commit im Jahr 2016 ( github.com/winterDroid/… ), Absturzberichte ohne Antwort ...
Reduzierung der Aktivität

3
Ich habe es geschafft, dieses entzückende Plugin unter AS 3.6 und möglicherweise, obwohl nicht getestet, auch unter AS 3.5 wiederzubeleben .
Bad Loser

2
@PrajwalW, aktualisierte Antwort, um die aktuelle Gabel zu erwähnen.
Adam Johns

97

Aktualisieren:

Die alte Art, das Plugin zu installieren, funktioniert nicht mehr, aber ein Teil des Original-Plugins funktioniert hier noch . Sie können dieser Antwort weiterhin folgen, nachdem Sie das Plugin manuell installiert haben.

Wenn Sie schnell und einfach arbeiten möchten, besuchen Sie https://www.img-bak.in/ oder https://appicon.co/. Sie funktionieren auch mit iOS.

Ich werde versuchen, den Prozess schrittweise zu erklären, damit er für jeden leicht verständlich ist.

1. Installieren Sie das Plugin manuell wie in der ReadME angegeben

2. Starten Sie Android Studio neu

3. Wie Sie in der folgenden Bildschirmabdeckung sehen können, gibt es hier nur eine Zeichnung

Geben Sie hier die Bildbeschreibung ein

4. Klicken Sie nun mit der rechten Maustaste auf den Zeichenordner und navigieren Sie zu Neu> Stapelzeichnbarer Import

Geben Sie hier die Bildbeschreibung ein

8. Klicken Sie nun auf das Symbol Hinzufügen

5. Wählen Sie nun "das Einzelbild" aus, für das Sie verschiedene Variationen von Zeichenelementen wünschen.

Geben Sie hier die Bildbeschreibung ein

6. Wählen Sie nun die Dimension des Ursprungsbilds aus. Wenn das Ursprungsbild wie in meinem Fall xxhdpi ist, wählen Sie "xxhdpi" als "Source Resoultion".

7. Drücken Sie jetzt OK und dann erneut OK. Dann dauert es einige Sekunden und Sie erhalten auf magische Weise alle Variablen der Drawables.Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein


3
Dieses Plugin ist gut, aber die Originalgröße muss eine ausreichende Auflösung haben, um eine gute Qualität für das Asset zu erhalten. Ich denke, es ist besser, den Designer zunächst nach xxxhdpi-Assets zu fragen und sie dann zu verkleinern.
Narko

@LaxmanBhattarai, ich möchte meine Anwendung nur in Querformat auf nur Tablet unterstützen. Also, gemäß Ihrer Antwort, welchen Zeichenordner sollte ich für Bilder verwenden, um alle Tablet-Geräte zu unterstützen? Kannst du es mich bitte wissen lassen?
Hiren Patel

developer.android.com/training/basics/supporting-devices/… Bitte beziehen Sie sich auf dieses Dokument, und ich denke, das Anhängen von -land am Ende eines Ordners kann zu einem
Querformat führen

Die Option "Icon Pack Drawable Importer" verwendet Material / Android-Symbole und wurde für mich gelöst. Vielen Dank für den Tipp @LaxmanBhattarai
Francis Rodrigues

1
Dieses Plugin scheint nicht mehr gewartet zu werden - letztes Commit im Jahr 2016 ( github.com/winterDroid/… ), Absturzberichte ohne Antwort ...
Reduzierung der Aktivität

67

Verwenden Sie einen Onlinedienst wie Image Baker .

Bildbäcker

Es ist einfach. Laden Sie die Bilder hoch und laden Sie verarbeitete Assets für Android und iOS herunter.

Heruntergeladene Bilder

Hinweis: Image Baker ist ein kostenloser Dienst, der von meinem Freund und mir erstellt wurde.


1
Es funktioniert für mich. Ich denke, es gibt ein Feedback-Widget, mit dem Sie den Entwicklern das Problem mitteilen können, mit dem Sie konfrontiert sind.
Asim KT

5
Ja, es funktioniert nicht. es bleibt "Bilder hochladen"
Batmaci

1
Es funktioniert. Da es sich um einen kostenlosen Service-Server handelt, kann dieser langsam sein. (alte Arbeit zum Aufräumen nach 24 Stunden) Versuchen Sie es nach einem Tag erneut oder lassen Sie es die Entwickler wissen.
Asim KT

Warum wird der Cron-Job einmal 24 Stunden ausgeführt, anstatt ihn häufiger auszuführen, um zu verhindern, dass er hängen bleibt? Ist es eine Einschränkung eines kostenlosen Dienstes? Warum gibt es "Wir benötigen ungefähr 100 US-Dollar pro Jahr, um den Dienst auszuführen", wenn er auf einem kostenlosen Server ausgeführt wird (Entwicklungskosten?).
Reduzierung der Aktivität

1. Es ist eine Einschränkung des kostenlosen Service. 2. Wenn es kostenlos ist, brauchen Sie kein Geld. (nur die Domaingebühr)
Asim KT

40

Ein Bash-Skript mit ImageMagick (Konvertierung) gemäß der Antwort von CommonsWare:

Ordnererstellung und Argumentprüfung dank Kishan Vaghela hinzugefügt

#!/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
Sehr nützliches Skript! Auf jeden Fall würde ich 67% (anstelle von 66%) für xhdpi verwenden. Das liegt daran, dass das Verhältnis zwischen xhdpi und xxhdpi 2/3 beträgt, was in Prozent und gerundet 67 ergibt. Andernfalls würde man xhdpi = 96 * 96 erhalten, wenn man 66 verwendet und sagt, dass die Auflösung der Eingabe xxhdpi = 96 * 96 ist statt 64 * 64.
HaimS

Wir sollten dir erstellen, wenn nicht gefunden
Kishan Vaghela

Bitte überprüfen Sie das aktualisierte Skript gist.github.com/Kishanjvaghela/8ec54f66c322d8d6940b4c0d1a58098d
Kishan Vaghela

Sehr nützlich und funktioniert gut. Ich denke du vermisst am Ende eine Fi. Gibt Fehler auf Bash 4.3.11
Mijo

Sie haben Recht @Mijo, Kishan hatte das letzte Fi tatsächlich in seinem Kern, und ich entfernte es, dumm mich
rdromao

23

BEARBEITEN:

Die Website heißt jetzt appicon.co


Normalerweise verwende ich Assets.codly.io.
Es generiert die Assets lokal in Ihrem Browser, kein Upload, kein Download.

Geben Sie hier die Bildbeschreibung ein


Es akzeptiert nur "App Icon Image (1024x1024" als Eingabe.
Reduzierung der Aktivität

2
@MateuszKonieczny Die Website wurde aktualisiert. Für die restlichen Bilder gibt es eine weitere Registerkarte für die Bilder, die als Bildersätze bezeichnet wird.
A. Zidan

Für Android generiert es nur App-Symbol, dh manipulieren Es generiert auch die zeichnbaren Symbole
Nivrutti Pawar

Was ist Ihre Design-Basisgröße auf dieser Website auswählen? Wir sollten 3x oder 4x wählen?
K Pradeep Kumar Reddy

13

Ich habe gerade eine einfache Möglichkeit gefunden, dies im neuen Android Studio zu tun:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein


KinhKohn und was weiter? Können wir eine andere Ressource auswählen?
CoolMind

Wenn Sie ein Bild hochladen möchten, das Sie möchten, verwenden Sie einfach die Browsing-Option. Wenn Sie dies meinen.
Kohn1001

Ja es funktioniert. Es scheint jedoch, dass benötigte Farbsymbole nur in einem Asset-Typ "Launcher-Symbole" erstellt werden. Es ersetzt also auch ein Startsymbol. Und legt Bilder in Mipmap-Ordnern ab.
CoolMind

1
Beachten Sie, dass es nur geeignet ist, wenn Sie ein Symbol hinzufügen möchten.
Reduzierung der Aktivität

8

Ich verwende ein Tool namens Android Icon Set in der Eclipse für Standardsymbole wie Launcher, ActionBar, Tab-Symbole und Benachrichtigungssymbole. Sie können es über Datei -> Neu -> Andere .. -> Android -> Android Icon Set starten. Das Beste daran ist, dass Sie eine beliebige Datei von Ihrem Computer auswählen können und automatisch alle Bilder mit Standardgrößen in Ihrem Projektverzeichnis abgelegt werden.

Geben Sie hier die Bildbeschreibung ein


... können Sie auch das Website-Äquivalent dieses Tools verwenden: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (das in dieser Antwort beschriebene Tool ist besser, da es direkt in Eclipse integriert ist und legt die Symbole automatisch in den richtigen Ordnern ab.
Booger

Unterstützt es "Allgemeine Symbole"?
Ali Behzadian Nejad

Das Web-Tool scheint dies zu unterstützen. Ich habe das Web aber auch nicht benutzt. Sie können diesen Link überprüfen: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi

7
  1. Verwenden Sie einfach https://romannurik.github.io/AndroidAssetStudio/index.html . Es kann eine Reihe von Symbolen aus einem Bild erstellen, später können Sie eine Zip-Datei herunterladen.
  2. Oder laden Sie eine Windows-Anwendung unter https://github.com/redwarp/9-Patch-Resizer/releases herunter (muss nicht installiert werden) und öffnen Sie ein Symbol.
  3. Sie können auch ein Plugin verwenden Android Drawable Importer, siehe Antworten oben. Installieren Sie Gabeln, da diese aufgegeben werden. Siehe Warum Android Drawable Importeur Auswahl ignoriert in AS 3.5 ab oder https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .

2
Bis der Autor von Android Drawable Importer nicht mehr AWOL ist, habe ich einen Zwischeninstallations- Zip für spätere Android Studio-Versionen erstellt.
Bad Loser

@BadLoser, ich habe dein Thema gesehen, danke! Ich benutze dieses Plugin selten, es enthält einige Fehler. Wenn sie erneut auftreten, versuchen Sie es mit Ihrer Lösung.
CoolMind

Ja - das Schreiben steht definitiv an der Wand für dieses alte Ding - aber erst, wenn AS Resource Manager seine Handlung vollständig bereinigt!
Bad Loser

4

Verwenden Sie Android Studio Image Asset

Gehe zu:

 Project>res --> right click

 new> image asset

Dann setzen Sie:

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

Wählen Sie: Weiter> Fertig stellen.

Now you will have your icon in the correct resolutions.

Visuelles Beispiel:

BEARBEITEN: Ich empfehle, SVG-Bilder zum Erstellen von Vektorzeichnungen zu verwenden und diese dann in einer Zeichenfläche zu verwenden, um die Größe auf die richtige Größe zu ändern oder einfach den DP zu ändern.

Sie können die Standardsymbole von Google erhalten oder einfach Ihre eigenen erstellen

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

Dann setzen Sie:

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

Wählen Sie: Weiter> Fertig stellen.

Jetzt haben Sie Ihr Symbol und können Größe, Farbe usw. ändern. Geben Sie hier die Bildbeschreibung ein


2

Es besteht auch die Möglichkeit, das Vector Asset Studio in Kombination mit Scalable Vector Graphics (SVG) zu verwenden . Android Studio erledigt den Rest für Sie. Wie die offizielle Dokumentation sagt:

Mit Vector Asset Studio können Sie Materialsymbole hinzufügen und SVG-Dateien (Scalable Vector Graphic) als zeichnbare Ressource in Ihr App-Projekt importieren. Im Vergleich zu Rasterbildern können Vektorzeichnungen die Größe Ihrer App reduzieren und die Größe ohne Verlust der Bildqualität ändern. Sie helfen Ihnen dabei, verschiedene Android-Geräte mit unterschiedlichen Bildschirmgrößen und Auflösungen einfacher zu unterstützen, da Sie auf allen einen Vektor anzeigen können, der gezeichnet werden kann.

Ich halte dies für den zukünftigen Ansatz.

Menüeintrag des Vector Asset Studio

Screenshot des Vector Asset Studio


2

Ich habe ein Photoshop-Skript geschrieben, um ic_launcher-PNG-Dateien aus PSD-Dateien zu erstellen. Überprüfen Sie einfach ic_launcher_exporter .

Um es zu verwenden, laden Sie es einfach herunter und verwenden Sie das Skript aus Photoshop.

Geben Sie hier die Bildbeschreibung ein

Und konfigurieren Sie, wo Sie Ausgabedateien generieren möchten.

Geben Sie hier die Bildbeschreibung ein


1

Nicht 100% automatisch, aber ich spare viel Zeit mit Photoshop-Aktionen .

Zum Beispiel xhdpierstelle ich bei bestimmten Assets eine Aufgabe für hdpiund mdpi, die auf 66,66% bzw. 44,44% skaliert. Dann führe ich die Aktionen für alle Bilder im Ordner aus xhdpi.

Für 512x512-Bilder müssen Sie lediglich berechnen, wie viel Prozent Sie Ihre Bilder skalieren sollten, um xxhpi, xhdpi, hdpi und mdpi zu erzielen.


0

Ich hatte die Lösung auf diese Weise in diesem Thread und es ist einfach, mit dem Plugin Android Drawable Importer zu arbeiten

Wenn Sie Android Studio unter MacOS verwenden, versuchen Sie einfach diesen Schritt, um einzusteigen:

  • Klicken Sie auf das Balkenmenü Android Studio und wählen Sie dann Einstellungen oder tippen Sie auf die Schaltfläche Befehl +,
  • Dann wählen Sie Plugins
  • Klicken Sie auf Repositorys durchsuchen
  • Schreiben Sie in die Suchspalte Android Drawable Importer
  • Klicken Sie auf die Schaltfläche Installieren
  • Und dann wird der Dialog Neustart angezeigt. Starten Sie einfach Android Studio neu

Nachdem Sie das Plugin erfolgreich installiert haben, klicken Sie einfach auf das Menü Neu erstellen und wählen Sie Batch Drawable Import . Klicken Sie dann auf die Plus-Schaltfläche oder die Schaltfläche Hinzufügen und wählen Sie Ihre Datei aus, um sie zeichnbar zu machen. Und dann klicke einfach auf OK und ok, das Drawable hat es alle geschafft.

Wenn Sie mit meinem Wort verwechselt werden, sehen Sie sich einfach das Bild-Tutorial von learningmechine an .


2
Es gibt kein Android Drawable ImporterPlugin mehr auf dem Markt. Ich habe versucht, Android Asset Importer but it crasheswenn ich versuche, es zu öffnen (Android Studio 3.6.1). Am
erroryte

-1

Ein einfaches Plugin in Android hilft Ihnen Schritt 1. Gehen Sie zu Einstellungen Schritt 2. Klicken Sie auf Plugin Schritt 3. Suchen Sie nach Android Drawable Importer Schritt 4. Installieren Sie das Plugin und starten Sie es neu

Wie benutzt man?

Gehen Sie zu Datei> Neu> Batch Drawable Import

Genießen


Es gibt kein Android Drawable ImporterPlugin mehr auf dem Android Studio-Marktplatz.
Micer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.