encontrar imagens PNG maiores que x pixels através do shell linux

Quando você está tentando trabalhar para mudar o design do seu site, você tem que se preocupar com a largura das imagens no seu conteúdo do artigo. Eu tenho notoriamente grandes telas sobre a maioria dos artigos que eu escrevi, então se eu quiser aumentar a barra lateral é fundamental para descobrir quais as imagens vão ser demasiado grande para caber no novo design.

Desde que eu sou um programador, seria fácil para mim escrever um pequeno aplicativo para fazer isso, mas me fez começar a pensar … por que não posso fazer isso na linha de comando do Linux?

A primeira coisa que eu descobri foi que as imagens PNG exibir os dados de tamanho quando você executar o “file” comando sobre eles

image3.png $ file; image3.png: dados de imagem PNG, 613 x 657, 8-bit / RGBA cor, não entrelaçado

Muito útil, pois 99% do quadro neste site estão em formato PNG. Então agora para jogá-lo em um loop para todos os arquivos no meu diretório de carregamento

$ For f in * .png; fazer arquivo $ f; done

image.png: dados de imagem PNG, 631 x 185, 8 bits / cor RGBA, não entrelaçado; image1.png: dados de imagem PNG, 631 x 96, 8-bit RGBA / cor, não entrelaçado; image10.png: dados de imagem PNG, 375 x 395, 8 bits / cor RGBA, não entrelaçado; image11.png: dados de imagem PNG, 484 x 241, 8 bits / RGBA cor, não entrelaçado; -snipped-

Isso é mais útil, mas eu teria que puxar os dados para o Excel ou um pedido semelhante, a fim de classificar os dados, então eu decidi usar o linux “corte” de comando para puxar para fora apenas a coluna de largura.

Você notará o parâmetro -f5 diz a cortar a tomar a quinta coluna, eo -d \ com um espaço após ele diz cortado para usar um espaço como delimitador. A barra \ personagem é um caractere de escape para dizer ao shell para usar o espaço como um personagem, e não como espaços em branco.

$ For f in * .png; fazer arquivo $ f | corte -f5 -d \; done

631; 631; 375; 484; -snipped-

for f in * .png; fazer se [arquivo `$ f | cortar -f5 -d \ `-gt 600]; em seguida, arquivo $ f; fi; done

image.png: dados de imagem PNG, 631 x 185, 8 bits / cor RGBA, não entrelaçado; image1.png: dados de imagem PNG, 631 x 96, 8-bit RGBA / cor, não entrelaçado; image17.png: dados de imagem PNG, 638 x 340, 8 bits / cor RGBA, não entrelaçado; image18.png: dados de imagem PNG, 608 x 448, 8 bits / RGBA cor, não entrelaçado; -snipped-

for f in * .png; fazer se [arquivo `$ f | cortar -f5 -d \ `-gt 600]; em seguida, echo $ f; fi; done

image.png; image1.png; image17.png; image18.png; -snipped-

O shell Linux é incrivelmente poderoso! Esta solução não é realmente prático para todos, mas é bom saber como trabalhar com o shell para que possa realizar este tipo de tarefa quando você precisar.

Droga esses comandos parecer complicado

E então as pessoas perguntam por que o Linux é tão impopular com o povo * Normal * …

Apenas meus 2 centavos.

(Usuário linux btw)

Vencedor

Eu certamente não defendo esse tipo de coisa para as pessoas “normais” =)

Obrigado, eu precisava disso. Eu estou tentando aprender linux.

Alguma idéia de como fazer isso com jpg?

Dennis

Eu não estou realmente certo, mas eu acho que você tem que encontrar um utilitário que poderia verificar as dimensões de uma imagem jpg, e você poderia substituí-lo na linha de comando.

Alternativamente, você provavelmente poderia escrever um php, script Python ou Perl ea interface com a biblioteca GD.

wow …; Você deve colocá-lo no comando de conversão (imagemagick) para escalá-lo se ele é maior

Agradável. Este é um exemplo perfeito do poder do shell Linux. Pode parecer comlicated, mas depois que você começa através da curva de aprendizado, você pode fazer coisas que são incrivelmente poderoso.

Obrigado pelo exemplo

Daniel

daniel1992.wordpress.com

ImageMagick de identificar deve ser capaz de identificar quaisquer arquivos que você tenha ativado durante a compilação-lo. Por exemplo

identificar ceaec3da6ef432af59fbdad2c93c277e.jpg; ceaec3da6ef432af59fbdad2c93c277e.jpg JPEG 160 × 90 160 × 90 + 0 + 0 DirectClass 8-bit 10.1797kb

Usando ImageMagic de identificar, o comando seria, pois f in * .jpg, fazer se [arquivo `$ f | cortar -f3 -d \ | cut -f1 -dx` -gt 600], em seguida, echo $ f, fi, feito

frascos de medicamentos de plástico são tipicamente de laranja ou marrom para uma razão prática, pois a luz degrada muitos tipos de medicação.