Como posso dimensionar todas as imagens em uma pasta para a mesma largura?

97

Quero dimensionar todas as imagens em uma pasta específica para a mesma largura (mas diferentes alturas dimensionadas adequadamente). Como fazer isso usando uma ferramenta baseada em GUI ou em linha de comando?

Para pontos de bônus, é possível restringir quais imagens são dimensionadas com base em sua largura inicial (ou seja, somente imagens em escala com largura> xe / ou largura <y)?

david.libremone
fonte
O avconv pode fazer isso através da CLI - Veja: libav.org/avconv.html#scale-1
Elder Geek

Respostas:

152

Isso é muito fácil de fazer com o imagemagick . Você deve conseguir instalá-lo no Centro de Software. Eu o sugeriria para o processamento em lote de imagens.

O redimensionamento do lote é incrivelmente simples (eu testei com o Ubuntu 11.10). Use o seguinte comando para redimensionar cada arquivo .jpg para 200 pixels de largura, mantendo a proporção:

$ convert '*.jpg[200x]' resized%03d.png

você pode manter o nome do arquivo usando a opção -set. Ex:

convert "images/*.jpg[250x]" -set filename:base "%[base]" "images/new_folder/%[filename:base].jpg"

Se você tiver mais arquivos, deverá usar o find

find /folder -iname '*.JPG' -exec convert \{} -verbose -set filename:base "%[base]" -resize 1920x1080\> "/folder/images/%[filename:base].JPG" \;

Isso está apenas arranhando a superfície do poder do imagemagick. O redimensionamento pode ser ajustado infinitamente . Para um redimensionamento mais avançado, você precisa usar a -resizeopção

Você pode limitar o redimensionamento a encolher :

$ convert '*.jpg[300x>]' thumb-300-%03d.png

ou ampliando :

$ convert '*.jpg[300x<]' thumb-300-%03d.png

Veja a documentação da geometria para ver mais opções.

bandi
fonte
1
Por que jpg para png?
JohnyTex
3
As extensões .jpg e .png são apenas um exemplo para demonstrar o uso de diferentes formatos.
bandi
Para mais informações sobre a opção -set : imagemagick.org/script/command-line-options.php ; basicamente, -set <property-name> <value>define uma propriedade; %<one-character>e %[<one-or-more-characters>]são expandidos pelo Imagemagick ao seu valor; As propriedades usadas para determinar programaticamente o nome do arquivo de saída precisam começar filename:, portanto, precisamos copiar a basepropriedade, contendo o caminho da imagem, para uma filename:<something>propriedade.
Marcotama 24/10
1
Obrigado por compartilhar este truque, eu não sabia!
Marcotama 24/10
2
propriedade de imagem desconhecida "% [base]"
Post Self
32

Para a GUI, o Phatch "um clique vale mais que mil fotos" é o melhor para um trabalho tão rápido. Já está no repositório Ubuntu.

sudo apt-get install phatch
  1. Adicionar Escala e Salvar item
  2. Definir opções de dimensionar / redimensionar
  3. Definir opções de salvamento / saída
  4. Corre
  5. Definir pasta de entrada
  6. Clique em lote para executar

insira a descrição da imagem aqui insira a descrição da imagem aqui

user.dz
fonte
2
Para um voto positivo, um exemplo de como realmente realizar a tarefa na pergunta seria bom :) Mas obrigado pela dica, boa ferramenta!
Jaywink
2
Isso não funcionou na minha máquina (Ubuntu Mate 16.04). O aplicativo ficou preso na tela de inicialização
Gunith D 4/17/17
1
@GunithDevasurendra, tente na linha de comando para verificar se há erros. se você não conseguiu resolvê-lo, escreva outra pergunta e inclua essa saída.
user.dz
1
Ótima ferramenta, eu a usei por anos. Infelizmente, ele não é mantido e não funciona nas versões atuais do Ubuntu. Espero que alguém possa bifurcar o código para corrigi-lo.
Diego V
No Fedora, não é o mesmo que acima e não tem essa funcionalidade
Vlad
29

Tente o seguinte:

sudo apt-get install gimp-plugin-registry

Em seguida, abra o Gimp e abra o plug-in Batch encontrado em Filters > Batch > Batch Process.

Selecione suas imagens na Inputguia e defina a operação Redimensionar na Resizeguia com nome surpreendente .

Mais informações podem ser encontradas aqui .

SirCharlo
fonte
21

Tente o mogrifycomando das ferramentas ImageMagick.

  • dê um caminho para separar a saída dos originais
  • dê a largura ou a altura desejada da miniatura, abaixo de um exemplo de largura
  • Dessa forma, você mantém o nome do arquivo original :-)

Exemplo:

$ mogrify -path small/ -auto-orient -thumbnail 300x *.jpg
miguelfg
fonte
1
Esta é a melhor resposta na minha opinião!
Tom
2
$ mogrify -path small / -resize 300x * .jpg
Iurie Malai
+1 e você pode redimensionar o lado mais longo se isso é para um retrato ou paisagem imagem girada: stackoverflow.com/a/5694903/227926
therobyouknow
8

Respondido e aceito (e eu uso o ImageMagick), mas para ser completo ... Eu tenho um chefe não técnico que queria um visualizador simples com algumas ferramentas básicas e tinha que ser uma GUI. Eu decidi no gThumb para ele.

Na visualização em miniatura, você ...

  • Selecione as imagens que deseja redimensionar
  • Inicie a função de redimensionamento (clique no ícone Chave inglesa> Redimensionar imagens ..)
  • Coloque um novo tamanho com base em pixels ou porcentagem
  • Selecione uma pasta de saída e pronto.
Dennis
fonte
Para redimensionar, é uma alternativa decente ao Phatch até que seja corrigido para 16.04.
Hastig Zusammenstellen 06/06/19
3

Para redimensionar imagens em lote, observei muitos pacotes e finalmente encontrei um com uma interface utilizável - converseen . Depois de descobrir que as configurações importantes estão um pouco ocultas no painel esquerdo rolável, tudo está bem.
Não tenho certeza se isso atende a todos os casos de uso dos OPs, mas talvez você não precise procurar nas UIs peculiares do imagemagick ou phatch.
Estranhamente, pacotes de gerenciamento de fotos como digikam, f-spot, fotoxx ou shotwell não parecem reconhecer a necessidade de copiar / redimensionar lotes de imagens antes de fazer o upload para serviços on-line, como photobucket ou (gag) flickr. Esses serviços querem que façamos as coisas da maneira deles, para que eu não confie neles para fazer backup de originais.

Mike
fonte