Existe um comando shell que retorna o tamanho do pixel de uma imagem?
Estou tentando produzir um gif animado a partir de diferentes gifs com tamanhos diferentes usando convert
(por exemplo convert -delay 50 1.gif 2.gif -loop 0 animated.gif
).
O problema é que o convert simplesmente sobrepõe as imagens usando o tamanho da primeira imagem como o tamanho do gif animado e, como eles têm tamanhos diferentes, o resultado é uma bagunça, com pedaços dos quadros antigos aparecendo nos novos.
Respostas:
encontrei uma solução:
identify
parte do pacote imagemagick, faz exatamente o que eu precisofonte
identify imagename.ico
?Like todour.ico[0] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[1] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.000
Em vez de analisar a saída
identify
pelo olho, ou pelos utilitários de texto, você pode usar sua-format
opção para gerar a largura e a altura no formato que melhor lhe convier. Por exemplo:Uma lista das propriedades da imagem que você pode gerar pode ser encontrada nesta página , mas para a pergunta aqui, parece que tudo o que você precisa é
%w
e%h
, que fornece a largura e a altura da imagem, respectivamente, em pixels.A flexibilidade oferecida por me
-format
foi útil para encontrar as maiores imagens em termos de pixels, produzindo%[fx:w*h]
várias imagens e classificando a saída.Convém especificar a
-ping
opção se estiver processando muitas imagens, usando escapes mais complicados e desejando garantir que o programa não perca tempo carregando as imagens inteiras. Com escapes simples,-ping
deve ser o padrão. Mais informações sobre a escolha entre-ping
e+ping
podem ser encontradas aqui .fonte
você pode simplesmente usar o comando "arquivo" para obter as informações necessárias:
fonte
file taylor-swift-money-makers-990.jpg
->taylor-swift-money-makers-990.jpg: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"
Use
identify
para ver os tamanhos:Extrair valor via
cut | sed
, do campo 3:Atribuir à variável:
fonte
Ambos
display
efile
são muito lento, e tem o potencial de trazer até mesmo sistemas bem capaz de joelhos lidar com muitas vários arquivos. Um pequeno teste:Ao ler apenas os bytes necessários, esta operação pode ser significativamente acelerada.
Aqui está o pngsize:
Esse método é muito mais rápido do que usar uma biblioteca que carrega o PNG para frente, para trás e para os lados apenas para obter o tamanho da imagem: P (considere o código com cuidado antes de alimentar um diretório cheio de PNGs arbitrários, é claro).
Os usos de código inet.h para htonl () para de- endian ize a ordenação byte cabeçalho.
fonte
Você também pode experimentar o GraphicsMagick , que é um fork bem conservado do ImageMagick usado, por exemplo, no Flickr e no Etsy:
É mais rápido do que a identificação do ImageMagick (nos meus testes cerca de duas vezes).
fonte
Este foi um trecho útil (não escrevi) que retorna as dimensões para cada png e jpg na pasta:
fonte
Para aqueles como eu que querem o tamanho em megapixels:
fonte