redimensionador de imagens em lote rápido [fechado]

10

procurando e não consigo encontrar o perfeito.
Eu tenho 100 GB de sequência de imagens 4K para processar.

encontrou o imagizer2 no sourceforge. multi-thread, mas não 64 bits (importa?).
Eu acho que o mais rápido estará usando a lib do núcleo da imagem IPP da Intel.

Estou no Windows, mas se alguma opção rápida e louca do linux estiver disponível, considerarei (benchmarks?).

benchmarks incluídos, executei em um lote de teste de 100 arquivos de 5k (4.3MB)

yoshco
fonte
Você mencionou a sequência de imagens - deseja processar imagens individuais ou combiná-las em sequências de vídeo? Neste último caso, eu faria as transformações durante a produção com o virtualdub.
Andy Lee Robinson
sim, meu plano original era fazer tudo isso na linha de comando usando o ffmpeg, ffmpeg -i d:\g\25\g_%%04d.jpg -r 15 -s hd720 -vcodec libx264 -fpre "libx264-hq.ffpreset" -crf 16 Day01_720.mp4 mas o fmpeg é codificado para suportar imagens não maiores que 5012 pixels. daí o redimensionamento.
27911 yoshco
Na verdade, prefiro o avisynth para o trabalho de sequência de imagens, é tão poderoso.
27511 Yoshco
Penny drops! Imagens com qualidade de filme em linha 4K, não imagens em 4kb! Sim, o avisynth é ótimo e é fornecido com dub virtual. ffmpeg é de código aberto, portanto, o limite de 5012 pixels pode ser modificado e recompilado, ou os autores podem aumentar o limite padrão. Não deve ser difícil.
Andy Lee Robinson
adicionando mais benchmakrs: VIPS e GraphicsMagick vips.ecs.soton.ac.uk/index.php?title=Speed_and_Memory_Use
yoshco

Respostas:

0

Ótimas estatísticas - obrigado pelas referências. Talvez seja tarde demais, mas você não mencionou os resultados do ImageResizer (da Codeplex) sugeridos no Batch Picture Resizer acima. (não é o mesmo que o "crapware" mencionado). Comecei a usá-lo depois que o MS parou de atualizar o Image Resizer. Mas certamente não tem as necessidades de velocidade e volume - apenas redimensionamentos limpos e rápidos para anexos de e-mail e outros.

David
fonte
obrigado, perdi o conjunto de dados original, mas em um conjunto comparável parece que isso é loucura rapidamente. muito ruim não é programável (mas sourcecode está disponível, então ...)
yoshco
5

Estou usando o IrfanView para converter 1 GB de arquivos tiff em arquivos GIF menores a cada noite. Leva apenas alguns minutos.

Um exemplo de comando seria semelhante a este (eu uso isso para converter imagens para minha exibição de fotos digitais)

"C:\Program Files (x86)\IrfanView\i_view32.exe" "C:\Pictures\Best\*.jpg" /resample=(720,540) /aspectratio /convert="C:\Temp\miniDisp\*_rsz.jpg"

Isso redimensiona todos os arquivos JPG de C: \ Picutres \ Best \ para 720x540 e os salva como C: \ Temp \ miniDisp \ OrgFilename _rsz.jpg.

As opções de linha de comando que o IrfanView entende podem ser encontradas na ajuda on-line (consulte Índice - Opções de linha de comando) ou on-line aqui

Tex Hex
fonte
irfan também é minha ferramenta do dia a dia, mas irfan = 80seg para o mesmo teste.
Yoshco 27/07/11
Bem, isso é muito longo comparado com os outros programas. Obrigado pelos testes.
Tex Hex
O irfanview também é meu visualizador e processador de lote, embora o virtualdub também seja uma ferramenta essencial. Ele pode ser usado para combinar sequências de imagens em um vídeo com o benefício da compactação delta, e uma imagem pode ser recuperada pela indexação de um quadro.
Andy Lee Robinson
5

Não tem certeza de como ele será comparado no departamento de benchmark, mas você pode tentar o ImageMagick usando as ferramentas "converter" ou "mogrificar". Parece que faz bom uso de 64 bits, número de núcleos e tal.
Tudo o que sei é que é realmente poderoso e cheio de recursos. Posso redimensionar no local ou adicionar opções como filtros de nova amostra e conversões de tipo de arquivo.

mogrify -format jpg -filter Cubic -resize 20%x20% rgb-?.png
Dennis
fonte
eu amo cmd, mas im também junky referência ... mageMagick-6.7.1-Q16x64 = 149sec
yoshco
Acho que não estou surpreso, pois parece que o ImageMagick é mais o canivete suíço do que o bisturi. Bem feito na pergunta e nos benchmarks.
Dennis
4

Confira estes programas:

  1. Redimensionador de imagens em lote .
  2. Image Resizer .

Redimensionando imagens usando arquivos em lote: Redimensionamento em lote .

TookTheRook
fonte
2
i levou 100 5k imagens: lote resizer imagem = 30seg imagizer2 = 64sec
yoshco
Experimente este: Fast Image Resizer ( adionsoft.net/fastimageresize ). Este também parece promissor: obviousidea.com/windows-software/light-image-resizer
TookTheRook
1
Tamanho
redizer
Publicidade falsa então. Experimente o método em lote que eu coloquei no comentário editado. Se isso não ajudar, estou sem opções. Caso contrário, se o redimensionador de imagens em lote demorar 30 segundos para redimensionar 500 MB de palavras de imagens (assumindo que cada uma das 100 imagens tenha 5 Mb. Ea), levará 1 hora e 40 minutos para redimensionar todos os 100 GB de fotos que você ter. Isso não é tão ruim?
TookTheRook 27/07
1

Paralelo pode ser usado para acelerar conversões em lote com o imagemagick.

Reduza cada * .jpg em um diretório para que nem a altura nem a largura sejam maiores que 1080 pixels:

parallel mogrify "{}" -resize 1080x1080 ::: *.jpg

Usando convert para criar arquivos menores separados:

parallel convert "{}" -resize 1080x1080 "{.}-small.jpg" ::: *.jpg

Note que isso se aplica ao paralelo GNU, não à versão empacotada nos moreutils do Debian, que possui uma sintaxe diferente e menos recursos. Consulte a página do manual para obter mais informações sobre paralelo.

evilsoup
fonte
0

vips é mais rápido, para mim:

$ header sample.jpg 
sample.jpg: 8888x5000 uchar, 3 bands, srgb, jpegload
$ for i in {1..100}; do cp sample.jpg t$i.jpg; done
$ time vipsthumbnail --size 1280 t*
real  0m14.672s
user  0m17.631s
sys   0m0.988s

A velocidade é limitada pela codificação / decodificação jpeg, que (graças à libjpeg) é de thread único. Você pode fazer isso um pouco mais rápido se executar várias versões em paralelo:

$ mkdir a b c d e
$ for j in a b c d e; do for i in {1..20}; do cp sample.jpg $j/t$i.jpg; done; done
$ time (for i in a b c d e; do vipsthumbnail --size 1280 $i/t* & done; wait)
real  0m5.258s
user  0m18.557s
sys   0m0.891s

Este é um imac de 2012, mas também existem binários do Windows.

http://www.vips.ecs.soton.ac.uk/supported/current/

jcupitt
fonte