Em teoria, não, isso não deve resultar em imagens corrompidas. Na memória, acho que imagemagick
trabalha com arquivos temporários, que são renomeados para o arquivo de destino escolhido depois que o processamento é feito.
BTW converter imagens do jeito que você fez é uma operação unidirecional, eu acho que você notou isso, daí a sua pergunta, eu acho.
Para descobrir qual imagem foi convertida por último, liste os arquivos em ordem cronológica, primeiro os arquivos mais recentes. Se houver uma diferença notável no tamanho do arquivo, você saberá com facilidade por onde começar da próxima vez. Caso contrário, você terá que recuperar as dimensões da imagem usando a identificação do imagemagick .
Observe também que, para um milhão de imagens, se cada imagem for processada em um segundo, isso ainda exigirá que cerca de 280 horas sejam concluídas. Espero que você tenha uma máquina rápida e poderosa ...
EDIT: Se você quiser mostrar algum progresso , aqui está o que posso pensar, com base em Resposta de Martin :
mkdir -p thumbs; \
COUNT=$(find -name "*.JPEG" | wc -l); \
find -name "*.JPEG" | while read IMG; do \
printf "\n$(( ++i )) / $COUNT\n" && \
[ -s "thumbs/${IMG%.JPEG}-small.jpg" ] || \
convert "$IMG" -resize "256^>" "thumbs/${IMG%.JPEG}-small.jpg"; \
done
O que isso faz:
- crie o diretório de miniaturas ...
- conte o número total de
.JPEG
images ... - para cada imagem ...
- imprime o índice do arquivo de imagem atual em relação ao total ...
- se a imagem ainda não foi convertida ...
- crie uma miniatura dela.
Supondo que todas as imagens para redimensionar estão no mesmo diretório, usei um subdiretório para salvar as imagens em miniatura para evitar bagunçar o diretório principal com as miniaturas correspondentes. Caso contrário, você poderá remover a primeira linha e o subdiretório thumbs/
da quinta e sexta linha.
Se as imagens estiverem espalhadas em subdiretórios:
COUNT=$(find -name "*.JPEG" | wc -l); \
find -name "*.JPEG" | while read IMG; do \
printf "\n$(( ++i )) / $COUNT\n" && \
[ -s "${IMG%.JPEG}-small.jpg" ] || \
convert "$IMG" -resize "256^>" "${IMG%.JPEG}-small.jpg"; \
done
Observe que esse script considera espaços em nomes de arquivos, pois a leitura é interrompida em um novo caractere de linha.