Apakah ada cara untuk membuat drawables xxhdpi, xhdpi, hdpi, mdpi dan ldpi dari gambar skala besar?

271

Apakah ada cara untuk membuat xxhdpi, xhdpi, hdpi, mdpi, dan ldpi drawables dari gambar skala besar secara otomatis? Sebagai contoh, asumsikan bahwa saya memiliki gambar 512x512 dan saya ingin memiliki versi berbeda dari gambar ini untuk resolusi layar yang berbeda yang didukung oleh Android dalam folder yang sesuai.

Ali Behzadian Nejad
sumber
3
Jika Anda menggunakan Windows: github.com/delight-im/AndroidDrawableResizer
gak
Saya melakukan alat ini di Android, Anda meletakkan gambar Anda di folder unduhan ponsel Anda, lalu pilih ukuran referensi & dpi, dan itu dikonversi ke semua kepadatan dan membuat folder yang sesuai: play.google.com/store/apps/details ? id = fr.arnaudguyon.dpiresizer
Arnaud SmartFun
Periksa jawaban ini untuk metode cepat dan mudah - stackoverflow.com/a/40830399/4015856
Asim KT
4
Di Android Studio, klik kanan res -> New -> Image Asset, pilihLauncher Icons (legacy)
onmyway133

Jawaban:

191

Opsi # 1: Cukup kirim -xxhdpidrawable dan biarkan Android menurunkan sampel untuk Anda saat runtime (downside: hanya akan bekerja pada perangkat yang cukup baru, di mana -xxhdpidiketahui).

Opsi # 2: Gunakan Android Asset Studio untuk menurunkan sampel mereka untuk Anda.

Opsi # 3: Mengotomatiskan proses dalam editor grafis, sesuai jawaban ssantos .

Opsi # 4: Script sendiri solusi, menggunakan sesuatu seperti ImageMagick.

Opsi # 5: Gunakan pembuat roti gambar

CommonsWare
sumber
Apakah hanya pengiriman xxhdpi dan xhdpi sebagai alternatif? Saya berasumsi bahwa perangkat yang tidak mengerti xxhdpi akan turun dari xhdpi
Juan Campa
@Juan: "Apakah pengiriman hanya xxhdpi dan xhdpi sebagai alternatif?" - hanya jika Anda minSdkVersion8 atau lebih tinggi. Jika Anda mencoba untuk mendukung perangkat yang lebih lama dari itu, Anda juga akan memerlukannya hdpi, karena tidak ada xhdpiatau tidak xxhdpiada untuk API Level 7 dan di bawah. Sekarang, apakah Anda menyukai tampilan
undsampled
Mengenai Opsi # 1 dan komentar Anda tentang xxhdpitidak ada, saya tidak percaya ini benar. Secara internal, Android menggunakan nomor DPI (160, 320, 480, dll.), Bukan string, untuk kualifikasi sumber daya. Jika DPI sistem 160 dan menemukan gambar 640, ia akan menurunkannya dengan 4, tanpa perlu "tahu tentang" kualifikasi tekstualnya. Kami telah mengirimkan sumber daya yang hanya ada di xxxhdpifolder (Android 4.3) ke perangkat Android 2.3.
Matt Quigley
opsi 2 tidak mendukung xxxhdpi
Nama Tampilan
2
Opsi # 4: Solusi skrip dengan ImageMagick di sini
rdromao
158

Perbarui :

Plugin yang disebutkan sebelumnya telah ditinggalkan, tetapi tampaknya memiliki fork up-to-date di sini .

Jawaban lama :

Saya menggunakan plugin Android Studio bernama Android Drawable Importer:

masukkan deskripsi gambar di sini

Untuk menggunakannya setelah diinstal, klik kanan folder res / drawable Anda dan pilih New > Batch Drawable Import:

Kemudian pilih gambar Anda melalui +tombol dan atur Resolusi menjadi xxhdpi (atau apa pun resolusi gambar sumber Anda).

Adam Johns
sumber
13
Terima kasih, Tapi saya sudah menggunakan 'Batch Drawable Import' alih-alih 'Scaled Drawable'.
Malder
Seperti @ user123456 mengatakan saya harus menggunakan Batch Drawable karena Scaled
Drawable
1
Pengaya ini tampaknya tidak lagi dipertahankan - komit terakhir pada 2016 ( github.com/winterDroid/... ), laporan macet tanpa respons apa pun ...
mengurangi aktivitas
3
Saya berhasil menghidupkan kembali plugin yang menggemaskan ini di bawah AS 3.6 dan mungkin, meskipun belum teruji, di bawah AS 3.5 juga.
Bad Loser
2
@PrajwalW, jawaban yang diperbarui untuk menyebutkan garpu terbaru.
Adam Johns
97

Memperbarui:

Cara lama memasang plugin tidak berfungsi lagi tetapi garpu dari plugin asli masih berfungsi di sini . Anda masih dapat mengikuti jawaban ini setelah menginstal plugin secara manual.

Jika Anda ingin cara cepat dan mudah kunjungi https://www.img-bak.in/ atau https://appicon.co/ mereka juga bekerja dengan iOS.

Saya akan mencoba menjelaskan prosesnya secara langkah bijak, sehingga akan mudah dipahami oleh siapa pun.

1. Instal plugin secara manual seperti yang disediakan dalam ReadME

2. Mulai ulang android studio

3. Seperti yang Anda lihat di screencap berikut, hanya ada satu yang dapat digambar di sini

masukkan deskripsi gambar di sini

4. Sekarang klik kanan pada folder drawable dan navigasikan ke New> Batch Drawable Import

masukkan deskripsi gambar di sini

8. Sekarang klik pada ikon add

5. Sekarang pilih gambar "Satu" yang Anda inginkan dengan variasi drawable yang berbeda.

masukkan deskripsi gambar di sini

6. Sekarang pilih dimensi gambar asal. Jika gambar asal adalah xxhdpi seperti dalam kasus saya pilih "xxhdpi" sebagai "Sumber Resoultion".

7. Sekarang tekan ok lalu ok lagi .. dan kemudian itu akan memakan waktu beberapa detik dan kemudian Anda secara ajaib akan mendapatkan semua variabel dari drawable.masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

erluxman
sumber
3
Plugin ini bagus, tetapi ukuran aslinya harus memiliki resolusi yang cukup untuk menjaga kualitas aset yang baik. Saya kira lebih baik meminta desainer untuk aset xxxhdpi pada awalnya dan kemudian menurunkannya.
narko
@ LaxmanBhattarai, saya ingin mendukung aplikasi saya hanya dalam lanskap di tablet saja. Jadi sesuai jawaban Anda folder yang dapat saya unduh untuk gambar untuk mendukung semua perangkat tablet? Bisakah Anda memberi tahu saya?
Hiren Patel
developer.android.com/training/basics/supporting-devices/... silakan merujuk ke dokumen ini dan saya pikir menambahkan -lahan di akhir folder apa pun dapat menghasilkan tata letak lanskap
erluxman
Pilihan "Importir Paket Ikon Paket" menggunakan ikon Material / Android dan dipecahkan untuk saya. Terima kasih atas tip @LaxmanBhattarai
Francis Rodrigues
1
Pengaya ini tampaknya tidak lagi dipertahankan - komit terakhir pada 2016 ( github.com/winterDroid/... ), laporan macet tanpa respons apa pun ...
mengurangi aktivitas
67

Gunakan layanan online seperti Image Baker .

pembuat gambar

Itu mudah. Unggah gambar dan unduh aset yang diproses untuk Android dan iOS.

Gambar yang diunduh

Catatan: Image Baker adalah layanan gratis yang dibuat oleh teman saya dan saya sendiri.

Asim KT
sumber
1
Ini bekerja untuk saya. Saya pikir ada widget umpan balik yang dapat Anda beri tahu pengembang tentang masalah yang Anda hadapi.
Asim KT
5
ya itu tidak berfungsi. tetap "mengunggah gambar"
batmaci
1
Bekerja. Karena itu server layanan gratis mungkin lambat. (pekerjaan crone untuk membersihkan setelah 24 jam) Coba lagi setelah sehari atau biarkan para devs tahu.
Asim KT
Mengapa cron job dijalankan sekali 24 jam alih-alih menjalankannya lebih sering agar tidak macet? Apakah ini batasan layanan gratis? Juga, mengapa ia memiliki "Kami membutuhkan sekitar $ 100 / tahun untuk menjalankan layanan" jika berjalan di server gratis (biaya dev?).
Mengurangi aktivitas
1. Ini adalah batasan layanan gratis 2. Jika gratis tidak perlu uang. (hanya biaya domain)
Asim KT
40

Skrip bash menggunakan ImageMagick (convert) sesuai jawaban CommonsWare:

Menambahkan pembuatan folder dan cek argumen berkat 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
Rhromao
sumber
2
Script yang sangat berguna! Bagaimanapun, saya akan menggunakan 67% (bukan 66%) untuk xhdpi. Itu karena rasio antara xhdpi dan xxhdpi adalah 2/3 yang ketika dilihat dalam persentase dan dibulatkan memberikan 67. Sebaliknya, jika seseorang menggunakan 66 dan mengatakan resolusi input adalah xxhdpi = 96 * 96, seseorang akan mendapatkan xhdpi = 63 * 63 bukannya 64 * 64.
HaimS
Kita harus membuat dir jika tidak ditemukan
Kishan Vaghela
Silakan periksa skrip yang diperbarui gist.github.com/Kishanjvaghela/8ec54f66c322d8d6940b4c0d1a58098d
Kishan Vaghela
Sangat bermanfaat, dan bekerja dengan baik. Saya kira Anda kehilangan satu fi pada akhirnya. Memberikan kesalahan pada bash 4.3.11
Mijo
Kau benar @Mijo, Kishan punya fi terakhir di intinya sebenarnya, dan aku menghapusnya, konyol aku
rdromao
23

EDIT:

Situs webnya sekarang disebut appicon.co


Saya biasanya menggunakan aset.codly.io
Ini menghasilkan aset secara lokal di browser Anda, tanpa unggahan, tanpa unduhan.

masukkan deskripsi gambar di sini

A.Zidan
sumber
Ini hanya menerima "gambar ikon aplikasi (1024x1024" sebagai masukan.
mengurangi aktivitas
2
@MateuszKonieczny Situs web diperbarui, Ada tab lain untuk gambar yang disebut Image Sets untuk sisa gambar.
A.Zidan
Untuk android, aplikasi ini hanya menghasilkan ikon aplikasi, yakni manip. Ini juga menghasilkan ikon yang dapat
digambar
Apa pilih ukuran dasar desain Anda di situs web itu ?? Kita harus memilih 3x atau 4x ??
K Pradeep Kumar Reddy
13

Baru saja menemukan cara mudah untuk melakukannya di Android Studio baru:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Kohn1001
sumber
KinhKohn, dan apa lagi? Bisakah kita memilih sumber daya lain?
CoolMind
Jika Anda ingin mengunggah gambar apa pun, Anda hanya perlu menggunakan opsi penelusuran .. jika ini yang Anda maksud.
Kohn1001
Ya itu berhasil. Tapi sepertinya itu membuat ikon warna yang dibutuhkan hanya dalam jenis aset "ikon peluncur". Jadi, itu juga menggantikan ikon peluncur. Dan menempatkan gambar ke folder mipmap.
CoolMind
1
Perhatikan bahwa itu hanya cocok jika Anda ingin menambahkan ikon.
Mengurangi aktivitas
8

Saya menggunakan alat yang disebut Android Icon Set di Eclipse untuk ikon standar seperti Launcher, ActionBar, ikon Tab dan ikon pemberitahuan. Anda dapat meluncurkannya dari File -> New -> Other .. -> Android -> Android Icon Set. Bagian terbaiknya adalah Anda dapat memilih file apa saja dari komputer Anda dan secara otomatis akan menempatkan semua gambar ukuran standar ke direktori proyek Anda.

masukkan deskripsi gambar di sini

Nitin Sethi
sumber
... Anda juga dapat menggunakan situs web yang setara dengan alat ini: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (alat yang dijelaskan dalam jawaban ini lebih baik, karena terintegrasi langsung ke Eclipse , dan secara otomatis akan menempatkan ikon di folder yang benar).
Booger
Apakah itu mendukung "ikon Generik"?
Ali Behzadian Nejad
Alat web tampaknya mendukungnya. Saya belum menggunakan web juga. Anda dapat melihat tautan ini: android-ui-utils.googlecode.com/hg/asset-studio/dist/…
Nitin Sethi
7
  1. Cukup gunakan https://romannurik.github.io/AndroidAssetStudio/index.html . Itu bisa membuat satu set ikon dari gambar, nanti Anda bisa mengunduh file zip.
  2. Atau unduh aplikasi Windows di https://github.com/redwarp/9-Patch-Resizer/releases (tidak perlu menginstal) dan buka ikon.
  3. Anda juga dapat menggunakan plugin Android Drawable Importer, lihat jawaban di atas. Karena ditinggalkan, pasang garpu. Lihat Mengapa Pengimpor Laci Android mengabaikan pilihan dalam AS 3.5 dan seterusnya atau https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .
CoolMind
sumber
2
Sampai penulis Android Drawable Importir berhenti menjadi AWOL, saya telah membuat zip instalasi sementara untuk rilis Android studio nanti.
Bad Loser
@ PadLoser, saya melihat topik Anda, terima kasih! Saya jarang menggunakan plugin ini, ini mengandung beberapa bug, jadi jika itu terjadi lagi, akan mencoba solusi Anda.
CoolMind
Ya - tulisan pasti ada di dinding untuk benda lama ini - tetapi tidak sampai AS Resource Manager sepenuhnya membersihkan aktingnya!
Bad Loser
4

Gunakan Aset Gambar Android Studio

Pergi ke:

 Project>res --> right click

 new> image asset

Kemudian atur:

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

Pilih: Berikutnya> Selesai.

Now you will have your icon in the correct resolutions.

Contoh Visual:

EDIT: Saya sarankan untuk menggunakan gambar SVG untuk membuat Drawables Vektor, dan kemudian menggunakannya dalam kanvas untuk mengubah ukurannya ke ukuran yang benar atau hanya mengubah DP.

Anda bisa mendapatkan ikon default dari Google atau hanya membuat Anda Sendiri

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

Kemudian atur:

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

Pilih: Berikutnya> Selesai.

Sekarang Anda akan memiliki ikon dan Anda dapat mengubah ukuran, warna dll. masukkan deskripsi gambar di sini

CarLoOSX
sumber
2

Ada juga kemungkinan untuk menggunakan Vector Asset Studio dalam kombinasi dengan Scalable Vector Graphics (SVG) . Android Studio akan menangani sisanya untuk Anda. Seperti yang dikatakan dalam dokumentasi resmi :

Vector Asset Studio membantu Anda menambahkan ikon material dan mengimpor file Scalable Vector Graphic (SVG) ke proyek aplikasi Anda sebagai sumber daya yang dapat digambar. Dibandingkan dengan gambar raster, gambar vektor dapat mengurangi ukuran aplikasi Anda dan diubah ukurannya tanpa kehilangan kualitas gambar. Mereka membantu Anda untuk lebih mudah mendukung perangkat Android yang berbeda dengan ukuran dan resolusi layar yang berbeda karena Anda dapat menampilkan satu vektor yang dapat digambar pada semuanya.

Saya menganggap ini pendekatan masa depan.

Entri menu dari Vector Asset Studio

Cuplikan layar dari Vector Asset Studio

Paul Spiesberger
sumber
2

Saya menulis skrip Photoshop untuk membuat file png ic_launcher dari file PSD. Cukup periksa ic_launcher_exporter .

Untuk menggunakannya, cukup unduh dan gunakan skrip dari photoshop.

masukkan deskripsi gambar di sini

Dan konfigurasikan di mana Anda ingin menghasilkan file output.

masukkan deskripsi gambar di sini

xcesco
sumber
1

Tidak 100% otomatis, tetapi saya menghemat banyak waktu menggunakan Tindakan Photoshop .

Sebagai contoh, mengingat xhdpiaset, saya kemudian membuat tugas untuk hdpidan mdpi, yang masing-masing menjadi 66,66% dan 44,44%. Lalu saya menjalankan tindakan untuk semua gambar di folder xhdpi.

Untuk gambar 512x512, yang harus Anda lakukan adalah menghitung persentase mana yang harus Anda skala gambar Anda untuk mencapai xxhpi, xhdpi, hdpi, dan mdpi.

ssanto
sumber
0

Saya telah menggunakan solusi sejauh ini di utas ini, dan mudah bekerja dengan plugin Android Drawable Importir

Jika Anda menggunakan Android Studio di MacOS, coba saja langkah ini untuk masuk:

  • Klik menu bar Android Studio lalu pilih Preferensi atau ketuk tombol Command +,
  • Kemudian pilih Plugins
  • Klik Telusuri repositori
  • Tulis di kolom pencarian Importir Drawable Android
  • Klik tombol Instal
  • Dan kemudian dialog Restart ditampilkan, cukup restart Android Studio

Setelah Anda berhasil menginstal plugin, untuk menjalankannya plugin ini cukup klik create New menu dan kemudian pilih Batch Drawable Import . Kemudian klik tombol tambah alias tombol Tambah, dan pergi pilih file Anda untuk membuat drawable. Dan kemudian klik ok dan ok drawable telah membuat semuanya.

Jika Anda bingung dengan kata-kata saya, lihat saja tutorial gambar dari learningmechine .

Uray Febri
sumber
2
Tidak ada Android Drawable Importerplugin di pasar lagi. Saya mencoba Android Asset Importer but it crashesketika saya mencoba untuk membukanya (Android Studio 3.6.1). Saya akhirnya menggunakan appicon.co
flawyte
-1

Sebuah plugin sederhana di Android akan membantu Anda. Langkah 1. Buka Pengaturan Langkah 2. Klik pada Plugin Langkah 3. Cari Android Drawable Drawer Langkah 4. Instal plugin dan restart

Cara Penggunaan?

Buka File> Baru> Impor Undian Batch

Nikmati

Hemant Maurya
sumber
Tidak ada Android Drawable Importerplugin lagi di Android Studio marketplace.
Micer