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.


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


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


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


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.


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

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


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


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


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


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

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


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


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


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.


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 .


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


Não há Android Drawable Importermais plug-in no mercado do Android Studio.
— Micer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.