Existe uma maneira de criar arquivos de desenho xxhdpi, xhdpi, hdpi, mdpi e ldpi a partir de uma imagem em grande escala?

271

Existe uma maneira de criar automaticamente drawables xxhdpi, xhdpi, hdpi, mdpi e ldpi a partir de uma imagem em larga escala? Por exemplo, suponha que eu tenha uma imagem de 512x512 e desejo ter versões diferentes dessas imagens para diferentes resoluções de tela suportadas pelo Android em pastas apropriadas.

Ali Behzadian Nejad
fonte
3
Caso você esteja no Windows: github.com/delight-im/AndroidDrawableResizer
caw
Eu fiz essa ferramenta no Android, você colocou sua foto na pasta de download do seu telefone, depois selecionou um tamanho de referência e dpi, e ela se converte em todas as densidades e cria as pastas apropriadas: play.google.com/store/apps/details ? ID = fr.arnaudguyon.dpiresizer
Arnaud SmartFun
Verifique esta resposta para obter um método rápido e fácil - stackoverflow.com/a/40830399/4015856
Asim KT
4
Em Android Studio, clique direito sobre res -> New -> Image Asset, escolhaLauncher Icons (legacy)
onmyway133

Respostas:

191

Opção nº 1: basta enviar os -xxhdpidrawables e permitir que o Android faça o downsample para você em tempo de execução (desvantagem: funcionará apenas em dispositivos relativamente recentes, onde -xxhdpié conhecido).

Opção 2: use o Android Asset Studio para reduzi-los para você.

Opção # 3: Automatize o processo dentro de um editor gráfico, de acordo com a resposta de ssantos .

Opção 4: crie uma solução para você mesmo, usando algo como o ImageMagick.

Opção 5: usar o padeiro de imagem

CommonsWare
fonte
O envio apenas de xxhdpi e xhdpi é uma alternativa? Estou assumindo que os dispositivos que não entendem xxhdpi vai downscale de xhdpi
Juan Campa
@ Juan: "O envio apenas de xxhdpi e xhdpi é uma alternativa?" - somente se você minSdkVersiontiver 8 anos ou mais. Se você estiver tentando oferecer suporte a dispositivos mais antigos do que isso, também precisará de hdpium, pois xhdpinem xxhdpiexistia para o API Nível 7 e abaixo. Agora, se você gosta da aparência de seus
draws reduzidos por
Em relação à opção 1 e seus comentários sobre a xxhdpiinexistência, não acredito que isso esteja correto. Internamente, o Android usa números de DPI (160, 320, 480 etc.), não cadeias, para os qualificadores de recursos. Se o DPI do sistema for 160 e encontrar uma imagem 640, ele será reduzido em 4, sem precisar "conhecer" seu qualificador textual. Enviamos recursos que existem apenas na xxxhdpipasta (Android 4.3) para dispositivos Android 2.3.
Matt Quigley
a opção 2 não oferece suporte a xxxhdpi
Nome para exibição
2
Opção # 4: Solução Script com ImageMagick aqui
rdromao
158

Atualização :

O plugin mencionado anteriormente foi abandonado, mas aparentemente possui uma bifurcação atualizada aqui .

Resposta antiga :

Eu uso o plug-in do Android Studio chamado Android Drawable Importer:

insira a descrição da imagem aqui

Para usá-lo após a instalação, clique com o botão direito do mouse na pasta res / drawable e selecione New > Batch Drawable Import:

Em seguida, selecione sua imagem através do +botão e defina a Resolução como xxhdpi (ou seja qual for a resolução da sua imagem de origem).

Adam Johns
fonte
13
Obrigado, mas eu usei 'Batch Drawable Import' em vez de 'Scaled Drawable'.
Malder28 de
Como @ user123456 diz que eu tive que usar Batch Drawable porque Scaled Drawable não apareceu
lujop
1
Este plugin parece não ser mantida - último commit em 2016 ( github.com/winterDroid/... ), relatórios de falhas sem qualquer resposta ...
atividade reduzindo
3
Consegui ressuscitar este adorável plug-in no AS 3.6 e possivelmente, embora não testado, no AS 3.5 também.
Bad Loser
2
@PrajwalW, resposta atualizada para mencionar o garfo atualizado.
Adam Johns
97

Atualizar:

A maneira antiga de instalar o plug-in não funciona mais, mas um fork do plug-in original ainda está funcional aqui . Você ainda pode seguir esta resposta depois de instalar o plugin manualmente.

Se você quiser uma maneira rápida e fácil, visite https://www.img-bak.in/ ou https://appicon.co/, eles também funcionam com iOS.

Tentarei explicar o processo passo a passo, para que seja fácil de entender para qualquer pessoa.

1. Instale o plug-in manualmente, conforme fornecido no ReadME

2. Reinicie o android studio

3. Como você pode ver no screencap a seguir, há apenas um drawable aqui

insira a descrição da imagem aqui

4. Agora clique com o botão direito do mouse na pasta drawable e navegue para New> Importable Drawable Batch

insira a descrição da imagem aqui

8. Agora clique no ícone Adicionar

5. Agora selecione a imagem "Single" que deseja diferentes variações de drawables.

insira a descrição da imagem aqui

6. Agora selecione qual a dimensão da imagem de origem. Se a imagem de origem for xxhdpi, como no meu caso, selecione "xxhdpi" como "Retorno da fonte".

7. Agora pressione ok e ok novamente. E isso levará alguns segundos e você obterá magicamente todas as variáveis ​​dos drawables.insira a descrição da imagem aqui

insira a descrição da imagem aqui

erluxman
fonte
3
Esse plug-in é bom, mas o tamanho original deve ter resolução suficiente para manter uma boa qualidade do recurso. Eu acho que é melhor pedir ao designer recursos xxxhdpi inicialmente e depois reduzi-los.
Narko 25/07
@LaxmanBhattarai, quero dar suporte ao meu aplicativo apenas em paisagem, em apenas tablet. Então, de acordo com sua resposta, qual pasta do drawer devo usar para imagens, a fim de suportar todos os tablets? Você poderia me avisar, por favor ?
Hiren Patel
developer.android.com/training/basics/supporting-devices/... consulte este documento e acho que anexando aterre no final de qualquer pasta pode resultar em layout de paisagem
erluxman
A opção "Importador Drawable do Icon Pack" utiliza ícones de Material / Android e resolveu para mim. Obrigado pela dica @LaxmanBhattarai
Francis Rodrigues /
1
Este plugin parece não ser mantida - último commit em 2016 ( github.com/winterDroid/... ), relatórios de falhas sem qualquer resposta ...
atividade reduzindo
67

Use um serviço online como o Image Baker .

padeiro de imagem

É simples. Faça o upload das imagens e faça o download dos recursos processados ​​para Android e iOS.

Imagens baixadas

Nota: O Image Baker é um serviço gratuito criado por mim e por meu amigo.

Asim KT
fonte
1
Está funcionando para mim. Acho que há um widget de feedback que você pode informar aos desenvolvedores sobre o problema que está enfrentando.
Asim KT
5
sim, não está funcionando. ele permanece "imagens upload"
batmaci
1
Está funcionando. Como é um servidor de serviço gratuito, pode ser lento. (trabalho antigo para limpeza após 24 horas) Tente novamente após um dia ou informe os desenvolvedores.
Asim KT
Por que o trabalho cron é executado uma vez 24 horas em vez de executá-lo com mais frequência para evitar que ele fique travado? É uma limitação de um serviço gratuito? Além disso, por que ele tem "Precisamos de cerca de US $ 100 / ano para executar o serviço" se estiver sendo executado em um servidor gratuito (custos de desenvolvimento?).
reduzindo a atividade
1. É uma limitação do serviço gratuito 2. Se for gratuito, não há necessidade de dinheiro. (apenas a cobrança do domínio)
Asim KT
40

Um script bash usando o ImageMagick (convert) conforme a resposta do CommonsWare:

Criação de pastas e verificação de argumentos adicionadas graças 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
fonte
2
Script muito útil! Enfim, eu usaria 67% (em vez de 66%) para xhdpi. Isso ocorre porque a razão entre xhdpi e xxhdpi é 2/3, que, quando analisada em porcentagem e arredondada, dá 67. Caso contrário, se alguém usa 66 e diz que a resolução da entrada é xxhdpi = 96 * 96, obteria xhdpi = 63 * 63 em vez de 64 * 64.
Haims
Devemos criar dir se não for encontrado
Kishan Vaghela
Verifique script atualizado gist.github.com/Kishanjvaghela/8ec54f66c322d8d6940b4c0d1a58098d
Kishan Vaghela
Muito útil e funciona bem. Eu acho que você está perdendo um fi no final. Dá erros no bash 4.3.11
Mijo
Você está certo @Mijo, Kishan tinha essa última fi em sua essência, na verdade, e eu o retirei, bobo me
rdromao
23

EDITAR:

O site agora é chamado appicon.co


Geralmente uso o assets.codly.io
Ele gera os ativos localmente no seu navegador, sem upload, sem download.

insira a descrição da imagem aqui

A.Zidan
fonte
Ele aceita apenas "imagem do ícone do aplicativo (1024x1024" como entrada)
reduzindo a atividade
2
@MateuszKonieczny O site é atualizado. Há outra guia para as imagens denominadas Conjuntos de imagens para o restante das imagens.
A.Zidan
Para android só gerar aplicativo ícone ou seja manip Ele também gerar os ícones drawable
Nivrutti Pawar
Qual é o tamanho da base de design selecionado nesse site? Devemos selecionar 3x ou 4x ??
K Pradeep Kumar Reddy
13

Acabei de encontrar uma maneira fácil de fazer isso no novo Android Studio:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Kohn1001
fonte
KinhKohn, e o que mais? Podemos escolher outro recurso?
CoolMind 16/02
Se você deseja fazer upload de qualquer imagem, basta usar a opção de navegação. Se é isso que você quer dizer.
Kohn1001
Sim, funciona. Mas parece que faz os ícones de cores necessários apenas em um tipo de ativo "Ícones do iniciador". Portanto, ele também substitui um ícone do iniciador. E coloca imagens em pastas mipmap.
CoolMind
1
Observe que ele é adequado apenas se você deseja adicionar um ícone.
reduzindo a atividade
8

Eu uso uma ferramenta chamada Android Icon Set no Eclipse para ícones padrão como Launcher, ActionBar, Tab e ícones de notificação. Você pode iniciá-lo em Arquivo -> Novo -> Outro .. -> Android -> Conjunto de ícones do Android. A melhor parte é que você pode escolher qualquer arquivo do seu computador e ele automaticamente colocará todas as imagens de tamanhos padrão no diretório do projeto.

insira a descrição da imagem aqui

Nitin Sethi
fonte
... você também pode usar o site equivalente a esta ferramenta: android-ui-utils.googlecode.com/hg/asset-studio/dist/… (a ferramenta descrita nesta resposta é melhor, pois está integrada diretamente ao Eclipse , e colocará automaticamente os ícones nas pastas corretas).
Booger
Ele suporta "Ícones genéricos"?
Ali Behzadian Nejad
A ferramenta da Web parece suportá-lo. Eu também não usei a web. Você pode verificar este link: android-ui-utils.googlecode.com/hg/asset-studio/dist/...
Nitin Sethi
7
  1. Basta usar https://romannurik.github.io/AndroidAssetStudio/index.html . Pode criar um conjunto de ícones a partir de uma imagem, depois você pode baixar um arquivo zip.
  2. Ou faça o download de um aplicativo do Windows em https://github.com/redwarp/9-Patch-Resizer/releases (não precisa instalar) e abra um ícone.
  3. Além disso, você pode usar um plugin Android Drawable Importer, veja as respostas acima. Por estar abandonado, instale os garfos. Consulte Por que o Importador do Drawable Android ignora a seleção no AS 3.5 em diante ou https://github.com/Vincent-Loi/android-drawable-importer-intellij-plugin .
  4. https://appicon.co/#image-sets .
CoolMind
fonte
2
Até que o autor do Android Drawable Importador deixe de ser AWOL, usei um zip de instalação provisório para versões posteriores do Android Studio.
Bad Loser
@ BadLoser, eu vi o seu tópico, obrigado! Eu raramente uso este plug-in, ele contém alguns bugs; portanto, se eles acontecerem novamente, tentam sua solução.
CoolMind
Sim - a escrita está definitivamente na parede para essa coisa antiga - mas não até o AS Resource Manager limpar completamente sua ação!
Bad Loser
4

Use o recurso de imagem do Android Studio

Vamos para:

 Project>res --> right click

 new> image asset

Em seguida, defina:

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

Selecione: Avançar> Concluir.

Now you will have your icon in the correct resolutions.

Exemplo visual:

EDIT: recomendo usar imagens SVG para criar Drawables vetoriais e depois usá-las em uma tela para redimensioná-las para o tamanho correto ou simplesmente alterar o DP.

Você pode obter os ícones padrão do Google ou apenas criar seu próprio

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

Em seguida, defina:

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

Selecione: Avançar> Concluir.

Agora você terá seu ícone e poderá alterar tamanho, cor, etc. insira a descrição da imagem aqui

CarLoOSX
fonte
2

Também existe a possibilidade de usar o Vector Asset Studio em combinação com o Scalable Vector Graphics (SVG) . O Android Studio cuidará do resto para você. Como a documentação oficial diz:

O Vector Asset Studio ajuda a adicionar ícones de materiais e importar arquivos SVG (Scalable Vector Graphic) para o seu projeto de aplicativo como um recurso que pode ser desenhado. Comparado às imagens rasterizadas, as gavetas vetoriais podem reduzir o tamanho do seu aplicativo e ser redimensionadas sem perda da qualidade da imagem. Eles ajudam você a suportar com mais facilidade diferentes dispositivos Android com tamanhos e resoluções de tela variados, porque você pode exibir um vetor que pode ser desenhado em todos eles.

Considero isso a abordagem futura.

Entrada de menu do Vector Asset Studio

Captura de tela do Vector Asset Studio

Paul Spiesberger
fonte
2

Eu escrevi um script do Photoshop para criar arquivos png ic_launcher a partir do arquivo PSD. Basta verificar ic_launcher_exporter .

Para usá-lo, basta fazer o download e usar o script do photoshop.

insira a descrição da imagem aqui

E configure onde você deseja gerar arquivos de saída.

insira a descrição da imagem aqui

xcesco
fonte
1

Não é 100% automático, mas economizo muito tempo usando o Photoshop Actions .

Por exemplo, dados os xhdpiativos, eu crio uma tarefa para hdpie mdpi, que aumenta para 66,66% e 44,44%, respectivamente. Então eu executo as ações para todas as imagens na pasta xhdpi.

Para imagens de 512x512, tudo o que você precisa fazer é calcular qual porcentagem você deve dimensionar suas imagens para obter xxhpi, xhdpi, hdpi e mdpi.

ssantos
fonte
0

Eu estava usando a solução até esse ponto, e é fácil trabalhar com o plug-in Android Drawable Importador

Se você estiver usando o Android Studio no MacOS, tente esta etapa para entrar:

  • Clique no menu da barra do Android Studio e escolha Preferências ou toque no botão Command +,
  • Então escolha Plugins
  • Clique em Procurar repositórios
  • Escreva na pesquisa coloumn Importador Drawable Android
  • Clique no botão Instalar
  • E, em seguida, a caixa de diálogo Reiniciar está sendo exibida, basta reiniciar o Android Studio

Após o sucesso na instalação do plug-in, para funcioná- lo, basta clicar no menu Create New e depois escolher Importar Lote Drawable . Em seguida, clique no botão mais, conhecido como botão Adicionar, e escolha o seu arquivo para desenhar. E, em seguida, basta clicar em ok e ok, o drawable torna todos eles.

Se você confundiu com a minha palavra, veja o tutorial de imagem da learningmechine .

Uray Febri
fonte
2
Não há mais Android Drawable Importerplugin no mercado. Eu tentei o Android Asset Importer but it crashesquando tento abri-lo (Android Studio 3.6.1). Acabei usando appicon.co
flawyte 13/03
-1

Um plug-in simples no Android ajudará você na Etapa 1. Vá para a Etapa Configurações 2. Clique na Etapa 3. do Plugin 3. Procure pelo Importador Drawable Android Etapa 4. Instale o plug-in e reinicie

Como usar?

Vá para Arquivo> Novo> Importação de Drawable em Lote

Aproveitar

Hemant Maurya
fonte
Não há Android Drawable Importermais plug-in no mercado do Android Studio.
Micer