Como incorporar vários tamanhos em um arquivo .ico?

15

Eu vi ícones .ico que têm imagens diferentes para vários tamanhos, por exemplo. 16x16, 32x32, 48x48, 128x128, 256x256. No Windows, como posso criar um arquivo de ícone que suporte vários tamanhos dessa forma, já que tenho arquivos .ico existentes para cada tamanho? Por favor, note que eu estou esperando para fazer isso para mais de 200 arquivos, então fazê-lo a partir de cmd seria o ideal.

    
por Suchipi 22.10.2012 / 18:24

7 respostas

23

O ImageMagick (Windows / Mac / Linux) contém uma ferramenta de linha de comando chamada convert que pode ser usado para muitas coisas, incluindo a compactação de várias imagens em um ícone:

convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico

O comando anterior leva 5 imagens PNG e as combina em um único arquivo .ico.

Diferentemente das outras respostas, esse método pode ser facilmente usado em scripts em lote para gerar automaticamente vários arquivos de ícones. Em um dos meus projetos, tenho uma única imagem vetorial (SVG) e uso Inkscape para gerar pngs de vários tamanhos, seguidos por convert para criar um contêiner de ícones. Este é um exemplo reduzido (em um script bash):

#!/bin/bash
for size in 16 32 48 128 256; do
    inkscape -z -e $size.png -w $size -h $size icon.svg >/dev/null 2>/dev/null
done
convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico
    
por 02.12.2013 / 23:25
6

Melhor comando para o ImageMagick:

convert in.jpg -define icon:auto-resize=16,48,256 -compress zip out.ico
    
por 25.01.2016 / 10:49
4

Você pode fazer isso gratuitamente no GIMP . Há instruções breves para fazer isso aqui .

Para citar:

  1. Open your image in Gimp
  2. Make your canvas square
  3. Resize your layer to the image
  4. Scale the layer to the largest size in your .ico file like 64 pixels
  5. Duplicate the layer
  6. Scale the duplicate layer to the next size
  7. Keep duplicating / scaling for all the sizes you want in your .ico file
  8. Save as .ico

No seu caso, você pode começar com a maior imagem e reduzir a escala para cada imagem duplicada ou adicionar novas camadas e importar as imagens de ícones específicas que deseja para essa camada.

    
por 22.10.2012 / 19:09
0

É minha opinião que Axialis IconMaker é a melhor solução para problemas com ícones. Há um teste de 30 dias que provavelmente resolverá o problema para você.

Eu tenho usado Axialis por tantos anos e em tantos projetos, posso atestar que é um produto realmente interessante. Você não precisa de 30 dias! Ha!

    
por 22.10.2012 / 19:06
0

Você deve usar um programa de edição de ícones de terceiros porque o MSPaint só oferece suporte a um único ícone por arquivo. Existem um par de rece aqui com recomendações para editores de ícones, alguns gratuitos, alguns comerciais.

Depois de definir um editor de ícones, o método de adicionar formatos de ícones varia, mas geralmente é semelhante (você clica em um botão ou seleciona um item de menu para adicionar um novo formato). A maioria dos programas permite que você importe um arquivo de ícone ao adicionar um formato / tamanho de ícone, mas a maioria também permite criar um novo formato / tamanho a partir do existente, redimensionando-o.

Se você optar por usar a opção criar de existir ao adicionar um novo formato / tamanho, crie-os no maior formato de ícone já disponível, pois ele será o mais dados para o algoritmo de redimensionamento para trabalhar. Além disso, certifique-se de usar uma versão com transparência ao criar um ícone do XP / Vista, pois a maioria dos programas não é ótima para criar o canal alfa a partir do zero.

    
por 22.10.2012 / 19:15
0

Você pode experimentar o png2ico de Matthias Benkmann. É grátis e pode empacotar vários tamanhos de png em um único arquivo ico.

    
por 19.02.2015 / 09:04
0

Aqui está a resposta aceita por Rob W , com uma adaptação trivial para evitar ter que digitar os tamanhos (16, 32, etc.) mais de uma vez:

#!/bin/bash
files=()
for size in 16 32 48 128 256; do
    inkscape -z -e "$size.png" -w "$size" -h "$size" logo.svg > /dev/null 2> /dev/null
    files+=("$size.png")
done
convert "${files[@]}" -colors 256 favicon.ico
unlink  "${files[@]}"

Aqui logo.svg representa a imagem de entrada (origem), a partir do qual criamos arquivos menores dos tamanhos desejados ( 16.png , 32.png , etc.) que então combinamos no arquivo de ícone de saída (resultado), favicon.ico . Você pode alterar a lista de tamanhos na linha 3, por exemplo, para "16 24 32 48 64 72 128", e o comando convert se adaptará automaticamente de acordo porque este script usa a técnica descrita por G-Man em responda aqui para criar uma matriz de nomes de arquivos. E finalmente nós desvinculamos (removemos) os arquivos PNG criados na linha 4, usando a matriz de nomes de arquivos novamente.

Eu notei que o comando:

convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico

(equivalente ao apresentado na resposta do user400747 ) imagem de bitmap realmente dimensionada (qualidade perdida) e camadas de fundo perdido transparência.

    
por 12.10.2018 / 19:29