Como classificar imagens em pastas, com base na resolução?

9

Plano de fundo: tenho uma pasta cheia de fotos salvas na área de trabalho. Eu gostaria de colocá-los em pastas, com base em sua resolução - 1024x768, etc. Criar as pastas rapidamente é um bônus. Atualmente, as imagens estão todas em uma pasta, mas algumas delas estão em subpastas. Posso fundi-los à mão, se isso facilitar as coisas.

Eu preferiria o terminal, apesar de ainda ser um novato. Na verdade, não sou muito programador.

Estou usando o Mac OS X, mas não me oponho a instalar aplicativos extras para fazer isso (MacPorts?) Ou até mesmo usar outro sistema operacional (eu tenho o Windows XP, Windows Vista e Ubuntu 9 instalado agora no VMWare )

Qualquer ajuda seria apreciada! Obrigado!

inflamável
fonte

Respostas:

11

Eu sei que é um tópico de mais de um ano (desculpe por isso), mas acho que alguém pode precisar do script de trabalho completo, então aqui está. Tomando as idéias aqui e compilando em um script que obtemos.

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done
zatatlan
fonte
4

Sério, obrigado por responder, pessoal! Voltei a isso, mais experiente, e a maioria dos comentários aqui faz mais sentido agora.

Ajustei levemente o script do @ zatatlan para acomodar espaços nos nomes de arquivos e adicionar mais extensões de arquivo.

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
    do res=$(identify -format %wx%h\\n "$image");
    mkdir -p $res;
    mv "$image" $res;
done
inflamável
fonte
3

É possível usar o imagemagick para detectar a resolução da imagem . Envolva-o em um loop bash e pronto. Não vou esperar até chegar em casa para uma concha, então aqui está algo em cima da minha cabeça. A sintaxe provavelmente está errada, mas pode fornecer algumas dicas.

for image in $(`*.jpg`) do
   res=`identify $image | grep -o 'Resolution:'`
   if [ ! -d $res ]; then
     mkdir $res
   fi

   mv $image $res
done

O script cria diretórios rapidamente. O bash e o imagemagick estão disponíveis para mac.

user4126
fonte
Você pode tornar o script um pouco mais curto e mais simples, substituindo o ifbloco por um simples mkdir -p $res.
23919 Ryan C. Thompson
2

Existe Amok EXIF ​​Sorter

O AmoK Exif Sorter pode renomear imagens e movê-las ou copiá-las para pastas arbitrárias.
As pastas podem ser nomeadas de acordo com os dados exif.

Oferece uma visualização ao vivo dos nomes dos arquivos, uma imagem integrada e visualizador de dados exif, arrastar e soltar, visualização em miniatura, verificação automática de atualização e perfis para diferentes câmeras e usuários.

Também suporta arquivos de vídeo por data de criação, arquivos no formato IPTC.

Escrito em JAVA , funciona em todas as plataformas de suporte JRE5.
Confira a lista de recursos no link.

Não desanime pelo idioma alemão.
Puxe para baixo Sprachee selecione Englisch, reinicie o aplicativo.

nik
fonte
1

O comando ImageMagick identificar pode fornecer a largura e a altura em pixels, por exemplo

~$ identify -format %w_%h\\n *jpg 
2868_3429
1056_960

Você pode colocar isso em um script bash como parte de um loop for e, por segurança, copiar os arquivos em um diretório com o mesmo nome da resolução (verifique se ele existe e crie, se não).

mas
fonte
0

Uma maneira básica que fornecerá uma ordem aproximada de resolução é organizar por tamanho de arquivo. Isso é algo que deve ser incorporado a qualquer sistema operacional, para que você não precise de nada de especial. O grande problema disso é que o formato das suas fotos precisaria ser o mesmo para que isso funcionasse. Esta não é uma solução perfeita, mas pode ser um intervalo fácil até você encontrar algo que realmente se encaixa na conta.

DHayes
fonte