Czy istnieje sposób tworzenia rysunków xxhdpi, xhdpi, hdpi, mdpi i ldpi z obrazu na dużą skalę?

271

Czy istnieje sposób automatycznego tworzenia rysunków xxhdpi, xhdpi, hdpi, mdpi i ldpi z obrazu wielkoformatowego? Załóżmy na przykład, że mam obraz 512x512 i chcę mieć różne wersje tego obrazu dla różnych rozdzielczości ekranu obsługiwane przez system Android w odpowiednich folderach.

Ali Behzadian Nejad
źródło
3
W przypadku korzystania z systemu Windows: github.com/delight-im/AndroidDrawableResizer
caw
Zrobiłem to narzędzie na Androida, umieszczasz swoje zdjęcie w folderze pobierania telefonu, a następnie wybierasz rozmiar odniesienia i rozdzielczość, a następnie konwertuje się na wszystkie gęstości i tworzy odpowiednie foldery: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun
Sprawdź tę odpowiedź, aby uzyskać szybką i łatwą metodę - stackoverflow.com/a/40830399/4015856
Asim KT
4
W Android Studio kliknij prawym przyciskiem myszy res -> New -> Image Asset, wybierzLauncher Icons (legacy)
onmyway133

Odpowiedzi:

191

Opcja nr 1: po prostu -xxhdpiwyślij pliki losowe i pozwól, aby Android zrzucił je dla ciebie w czasie wykonywania (minus: będzie działał tylko na dość nowych urządzeniach, o których -xxhdpiwiadomo).

Opcja nr 2: użyj aplikacji Android Asset Studio, aby pobrać próbki za Ciebie.

Opcja nr 3: Zautomatyzuj proces w edytorze graficznym, zgodnie z odpowiedzią ssantos .

Opcja nr 4: Napisz do siebie rozwiązanie, używając czegoś takiego jak ImageMagick.

Opcja nr 5: Użyj piekarza obrazów

CommonsWare
źródło
Czy wysyłanie tylko xxhdpi i xhdpi jest alternatywą? Zakładam, że urządzenia, które nie rozumieją xxhdpi, zmniejszą skalę z xhdpi
Juan Campa
@Juan: „Czy wysyłanie tylko xxhdpi i xhdpi jest alternatywą?” - tylko jeśli masz minSdkVersion8 lat lub więcej. Jeśli próbujesz obsługiwać starsze urządzenia, będziesz także potrzebować hdpijednego, ponieważ ani xhdpinie xxhdpiistniał, ani na poziomie API 7 i niższym. To, czy podoba Ci się wygląd próbników z obniżoną próbką, to zupełnie inna sprawa ...
CommonsWare
Jeśli chodzi o opcję nr 1 i wasze komentarze na temat xxhdpinieistnienia, nie sądzę, aby było to poprawne. Wewnętrznie Android używa liczb DPI (160, 320, 480 itd.), A nie ciągów znaków, dla kwalifikatorów zasobów. Jeśli DPI systemu wynosi 160 i znajdzie obraz 640, przeskaluje go o 4, bez potrzeby „wiedzieć o” swoim kwalifikatorze tekstowym. Dostarczyliśmy zasoby, które istnieją tylko w xxxhdpifolderze (Android 4.3) na urządzenia z Androidem 2.3.
Matt Quigley,
opcja 2 nie obsługuje xxxhdpi
Nazwa wyświetlana
2
Opcja # 4: Rozwiązanie skryptu z ImageMagick tutaj
rdromao,
158

Aktualizacja :

Wspomniana wcześniej wtyczka została porzucona, ale najwyraźniej ma tutaj aktualne widelec .

Stara odpowiedź :

Używam wtyczki Android Studio o nazwie Android Drawable Importer:

wprowadź opis zdjęcia tutaj

Aby użyć go po zainstalowaniu, kliknij prawym przyciskiem myszy folder res / drawable i wybierz New > Batch Drawable Import:

Następnie wybierz obraz za pomocą +przycisku i ustaw Rozdzielczość na xxhdpi (lub niezależnie od rozdzielczości obrazu źródłowego).

Adam Johns
źródło
13
Dzięki, ale użyłem „Importu wsadowego do rysowania” zamiast „Skalowanego rysunku”.
Malder
Jak @ user123456 mówi, że musiałem używać Batch Drawable, ponieważ Scaled Drawable nie pojawił się
lujop,
1
Wygląda na to, że ta wtyczka nie jest już obsługiwana - ostatnie zatwierdzenie w 2016 r. ( Github.com/winterDroid/… ), raporty o awariach bez odpowiedzi ...
ograniczenie aktywności
3
Udało mi się wskrzesić tę uroczą wtyczkę pod AS 3.6 i być może, choć nie przetestowałem, również pod AS 3.5.
Bad Loser
2
@PrajwalW, zaktualizowana odpowiedź, aby wspomnieć o aktualnym rozwidleniu.
Adam Johns
97

Aktualizacja:

Stary sposób instalowania wtyczki już nie działa, ale widżet oryginalnej wtyczki nadal działa tutaj . Nadal możesz postępować zgodnie z tą odpowiedzią po ręcznym zainstalowaniu wtyczki.

Jeśli chcesz szybko i łatwo wejść na stronę https://www.img-bak.in/ lub https://appicon.co/ , działają one również z iOS.

Spróbuję wyjaśnić ten proces krok po kroku, aby każdy mógł go łatwo zrozumieć.

1. Zainstaluj wtyczkę ręcznie zgodnie z instrukcją ReadME

2. Uruchom ponownie studio Android

3. Jak widać na poniższym zrzucie ekranu, tutaj jest tylko jeden rysunek

wprowadź opis zdjęcia tutaj

4. Teraz kliknij prawym przyciskiem myszy folder do rysowania i przejdź do opcji Nowy> Import ciągniony

wprowadź opis zdjęcia tutaj

8. Teraz kliknij ikonę dodawania

5. Teraz wybierz „Pojedynczy” obraz, który chcesz mieć różne odmiany rysunków.

wprowadź opis zdjęcia tutaj

6. Teraz wybierz, jaki wymiar ma obraz źródłowy. Jeśli obrazem źródłowym jest xxhdpi, tak jak w moim przypadku, wybierz „xxhdpi” jako „Resoultion źródła”.

7. Teraz naciśnij OK, OK OK. A potem zajmie to kilka sekund, a następnie magicznie zdobędziesz wszystkie zmienne z drawable.wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

erluxman
źródło
3
Ta wtyczka jest dobra, ale oryginalny rozmiar musi mieć wystarczającą rozdzielczość, aby utrzymać dobrą jakość zasobu. Wydaje mi się, że lepiej najpierw poprosić projektanta o zasoby xxxhdpi, a następnie pomniejszyć je.
narko
@LaxmanBhattarai, chcę wspierać moją aplikację tylko w trybie poziomym, tylko na tablecie. Więc jak na twoją odpowiedź, który folder rysunkowy powinienem dla obrazów, aby obsłużyć wszystkie tablety? Czy możesz dać mi znać?
Hiren Patel
developer.android.com/training/basics/supporting-devices/… zapoznaj się z tym dokumentem i myślę, że dołączenie -land na końcu dowolnego folderu może spowodować układ
poziomy
Opcja „Icon Pack Drawable Importer” wykorzystuje ikony materiałów / Androida i rozwiązała dla mnie. Dzięki za wskazówkę @LaxmanBhattarai
Francis Rodrigues,
1
Wygląda na to, że ta wtyczka nie jest już obsługiwana - ostatnie zatwierdzenie w 2016 r. ( Github.com/winterDroid/… ), raporty o awariach bez odpowiedzi ...
ograniczenie aktywności
67

Skorzystaj z usługi online, takiej jak Image Baker .

piekarz obrazu

To proste. Prześlij obrazy i pobierz przetworzone zasoby dla Androida i iOS.

Pobrane obrazy

Uwaga: Image Baker to darmowa usługa stworzona przeze mnie i mojego przyjaciela.

Asim KT
źródło
1
To działa dla mnie. Myślę, że istnieje widżet opinii, który możesz powiedzieć programistom o napotkanym problemie.
Asim KT
5
tak, to nie działa. pozostaje „przesyłanie zdjęć”
batmaci,
1
To działa. Ponieważ jest to darmowy serwer usług może być powolny. (robota do sprzątania po 24 godzinach) Spróbuj ponownie po dniu lub powiadom deweloperów.
Asim KT
Dlaczego zadanie CRON jest uruchamiane raz na 24 godziny zamiast częściej, aby zapobiec jego zablokowaniu? Czy jest to ograniczenie bezpłatnej usługi? Ponadto, dlaczego ma „Potrzebujemy około 100 USD rocznie na uruchomienie usługi”, jeśli działa na bezpłatnym serwerze (koszty tworzenia?).
zmniejszenie aktywności
1. Jest to ograniczenie bezpłatnej usługi 2. Jeśli jest bezpłatna, nie potrzeba pieniędzy. (tylko opłata za domenę)
Asim KT
40

Skrypt bashowy przy użyciu ImageMagick (konwersja) zgodnie z odpowiedzią CommonsWare:

Dodano tworzenie folderów i sprawdzanie argumentów dzięki Kishanowi Vagheli

#!/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
źródło
2
Bardzo przydatny skrypt! W każdym razie użyłbym 67% (zamiast 66%) dla xhdpi. Jest tak, ponieważ stosunek między xhdpi i xxhdpi wynosi 2/3, co w procentach i zaokrągleniu daje 67. W przeciwnym razie, jeśli użyje się 66 i powie się, że rozdzielczość wejściowa wynosi xxhdpi = 96 * 96, to otrzymamy xhdpi = 63 * 63 zamiast 64 * 64.
HaimS
Powinniśmy stworzyć
katalog,
Sprawdź zaktualizowany skrypt gist.github.com/Kishanjvaghela/8ec54f66c322d8d6940b4c0d1a58098d
Kishan Vaghela
Bardzo przydatne i działa dobrze. Myślę, że brakuje ci jednego fi na końcu. Daje błędy w bash 4.3.11
Mijo
Masz rację @Mijo, Kishan faktycznie miał ostatnie fi w swojej istocie, a ja je usunąłem, głupie mnie
rdromao
23

EDYTOWAĆ:

Strona nazywa się teraz appicon.co


Zwykle używam asset.codly.io
Generuje zasoby lokalnie w przeglądarce, bez przesyłania, bez pobierania.

wprowadź opis zdjęcia tutaj

A.Zidan
źródło
Akceptuje tylko „obraz ikony aplikacji (1024x1024”) jako dane wejściowe.
Zmniejszenie aktywności
2
@MateuszKonieczny Witryna została zaktualizowana. Istnieje jeszcze jedna zakładka dla obrazów o nazwie Zestawy obrazów dla pozostałych obrazów.
A.Zidan
Dla Androida generuje tylko ikonę aplikacji, tj. Manip To także generuje ikony do rysowania
Nivrutti Pawar
Jaki jest rozmiar bazy projektu w tej witrynie? Powinniśmy wybrać 3x lub 4x?
K Pradeep Kumar Reddy
13

Właśnie znalazłem łatwy sposób, aby to zrobić w nowym Android Studio:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Kohn1001
źródło
KinhKohn i co dalej? Czy możemy wybrać inny zasób?
CoolMind,
Jeśli chcesz załadować dowolny obraz, po prostu skorzystaj z opcji przeglądania .. jeśli to masz na myśli.
Kohn1001
Tak to działa. Ale wydaje się, że sprawia, że ​​potrzebne kolorowe ikony są tylko w typie zasobu „Ikony uruchamiania”. Zastępuje więc także ikonę programu uruchamiającego. I umieszcza obrazy w folderach mipmap.
CoolMind
1
Pamiętaj, że nadaje się tylko, jeśli chcesz dodać ikonę.
ograniczenie aktywności
8

Używam narzędzia o nazwie Android Icon Set w Eclipse do standardowych ikon, takich jak Launcher, ActionBar, ikony Tab i ikony powiadomień. Możesz go uruchomić z menu Plik -> Nowy -> Inne .. -> Android -> Zestaw ikon Androida. Najlepsze jest to, że możesz wybrać dowolny plik ze swojego komputera, a on automatycznie umieści wszystkie obrazy o standardowych rozmiarach w katalogu projektu.

wprowadź opis zdjęcia tutaj

Nitin Sethi
źródło
... możesz również użyć odpowiednika tego narzędzia na stronie: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (narzędzie opisane w tej odpowiedzi jest lepsze, ponieważ jest zintegrowane bezpośrednio z Eclipse i automatycznie umieści ikony w odpowiednich folderach).
Booger
Czy obsługuje „ogólne ikony”?
Ali Behzadian Nejad
Wydaje się, że narzędzie to obsługuje. Nie korzystałem też z Internetu. Możesz sprawdzić ten link: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi
7
  1. Wystarczy użyć https://romannurik.github.io/AndroidAssetStudio/index.html . Może zrobić zestaw ikon z obrazu, później możesz pobrać plik zip.
  2. Lub pobierz aplikację Windows na https://github.com/redwarp/9-Patch-Resizer/releases (nie trzeba instalować) i otwórz ikonę.
  3. Możesz także użyć wtyczki Android Drawable Importer, patrz odpowiedzi powyżej. Ponieważ jest opuszczony, zainstaluj widelce. Zobacz, dlaczego Android Drawable Importer ignoruje wybór w AS 3.5 lub https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .
CoolMind
źródło
2
Dopóki autor aplikacji Android Drawable Importer nie przestanie być AWOL, otworzyłem tymczasowy plik instalacyjny do późniejszych wersji Android Studio.
Bad Loser
@BadLoser, widziałem twój temat, dzięki! Rzadko korzystam z tej wtyczki, zawiera ona pewne błędy, więc jeśli się powtórzą, wypróbuje twoje rozwiązanie.
CoolMind
Tak - napis jest zdecydowanie na ścianie dla tej starej rzeczy - ale dopiero wtedy, gdy AS Resource Manager w pełni wyczyści swój akt!
Bad Loser
4

Użyj zasobu obrazu Android Studio

Iść do:

 Project>res --> right click

 new> image asset

Następnie ustaw:

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

Wybierz: Dalej> Zakończ.

Now you will have your icon in the correct resolutions.

Przykład wizualny:

EDYCJA: Polecam używać obrazów SVG do tworzenia Rysunków Wektorowych, a następnie użyć ich w obszarze roboczym, aby zmienić ich rozmiar na odpowiedni rozmiar lub po prostu zmienić DP.

Możesz uzyskać domyślne ikony od Google lub po prostu utworzyć własne

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

Następnie ustaw:

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

Wybierz: Dalej> Zakończ.

Teraz będziesz mieć swoją ikonę i będziesz mógł zmienić rozmiar, kolor itp. wprowadź opis zdjęcia tutaj

CarLoOSX
źródło
2

Istnieje również możliwość korzystania z Vector Asset Studio w połączeniu ze Scalable Vector Graphics (SVG) . Android Studio zajmie się resztą. Zgodnie z oficjalną dokumentacją :

Vector Asset Studio pomaga dodawać ikony materiałów i importować pliki skalowalnej grafiki wektorowej (SVG) do projektu aplikacji jako zasób do pobrania. W porównaniu do obrazów rastrowych, drawable wektorowe mogą zmniejszać rozmiar aplikacji i zmieniać jej rozmiar bez utraty jakości obrazu. Pomagają one łatwiej obsługiwać różne urządzenia z Androidem o różnych rozmiarach i rozdzielczościach ekranu, ponieważ na każdym z nich można wyświetlać jeden wektor.

Uważam to za przyszłe podejście.

Pozycja menu Vector Asset Studio

Zrzut ekranu z Vector Asset Studio

Paul Spiesberger
źródło
2

Napisałem skrypt Photoshopa do tworzenia plików png ic_launcher z pliku PSD. Po prostu sprawdź ic_launcher_exporter .

Aby go użyć, wystarczy go pobrać i użyć skryptu z Photoshopa.

wprowadź opis zdjęcia tutaj

I skonfiguruj, gdzie chcesz wygenerować pliki wyjściowe.

wprowadź opis zdjęcia tutaj

Xcesco
źródło
1

Nie w 100% automatyczny, ale oszczędzam dużo czasu, używając działań w Photoshopie .

Na przykład, biorąc pod uwagę xhdpiaktywa, tworzę zadanie dla hdpii mdpi, które skaluje się odpowiednio do 66,66% i 44,44%. Następnie uruchamiam akcje dla wszystkich obrazów w folderze xhdpi.

W przypadku obrazów 512 x 512 wystarczy obliczyć, jaki procent należy przeskalować, aby uzyskać xxhpi, xhdpi, hdpi i mdpi.

ssantos
źródło
0

W tym wątku korzystałem z tego rozwiązania i praca z wtyczką Android Drawable Importer jest łatwa

Jeśli używasz Androida Studio na MacOS, po prostu spróbuj wykonać ten krok, aby się dostać:

  • Kliknij menu paska Android Studio, a następnie wybierz Preferencje lub naciśnij przycisk Command +,
  • Następnie wybierz Wtyczki
  • Kliknij Przeglądaj repozytoria
  • Napisz w kolumnie wyszukiwania Android Drawable Importer
  • Kliknij przycisk Instaluj
  • A następnie pojawia się okno dialogowe Uruchom ponownie, po prostu uruchom ponownie Android Studio

Po pomyślnym zainstalowaniu wtyczki, aby ją uruchomić, kliknij po prostu Utwórz nowe menu, a następnie wybierz Batch Drawable Import . Następnie kliknij przycisk plus aka Dodaj przycisk i wybierz plik, aby był dostępny. A następnie po prostu kliknij OK i OK, dzięki czemu można je wszystkie ustawić.

Jeśli mylisz się z moim słowem, po prostu zobacz samouczek obrazkowy z learningmechine .

Uray Febri
źródło
2
Na Android Drawable Importerrynku nie ma już żadnych wtyczek. Próbowałem, Android Asset Importer but it crashesgdy próbuję go otworzyć (Android Studio 3.6.1). Skończyło się na użyciu appicon.co
flawyte
-1

Prosta wtyczka w systemie Android pomoże Ci Krok 1. Przejdź do Ustawień Krok 2. Kliknij Wtyczkę Krok 3. Wyszukaj importowalnego systemu Android Krok 4. Zainstaluj wtyczkę i uruchom

Jak używać?

Przejdź do Plik> Nowy> Import ciągniony

Cieszyć się

Hemant Maurya
źródło
W Android Drawable ImporterAndroid Studio Marketplace nie ma już żadnych wtyczek.
Micer