Encontrei várias maneiras de alterar a resolução de uma imagem usando convert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
Qual é a diferença disso?
Se eu precisar fazer miniaturas de imagens grandes de vários tamanhos com proporção fixa (corte necessário) - qual é a minha melhor escolha?
imagemagick
thumbnails
Husa
fonte
fonte
Respostas:
redimensionar
-resize
suporta uma configuração adicional de-filter
(que deve ocorrer na linha de comando antes de usar-resize
!).-filter
determina o algoritmo exato a ser usado para as cores dos pixels adicionados no caso de ampliação, ou para as cores a serem usadas para os pixels restantes quando alguns de seus vizinhos são removidos em caso de minificação.Para obter uma lista de filtros compatíveis, basta executar
convert -list filter
.-filter point -resize 400x300
cria exatamente o mesmo resultado-sample 400x300
, mas ainda é um pouco mais lento.Se não for definido ao lado (antes)
-resize
, a conversão será silenciosamente padronizada para-filter Lanczos
que é mais lenta, mas que gera uma qualidade muito melhor (porque leva em conta as cores de todos os pixels circundantes para qualquer um recém-adicionado) do que-filter point
produz (que usa o mais próximo regra do vizinho para determinar a cor de pixels recém-adicionados).amostra
-sample
não suporta a configuração adicional de-filter
; se definido de qualquer maneira,-filter
será simplesmente ignorado.Ao ampliar (porque o tamanho da imagem de entrada pode ser menor que
400x300
), os pixels são replicados em blocos.Ao minimizar (porque o tamanho da imagem de entrada pode ser maior que
400x300
), os pixels são sub-amostrados com um algoritmo muito simples: algumas linhas e colunas são simplesmente ignoradas.O argumento geometry para
-sample
não suporta nenhuma parte de deslocamento (ao contrário-resize
, que respeita as diretivas de deslocamento para a saída).A saída nunca terá mais cores (diferentes) do que a imagem de entrada tinha; ele pode ter menos cores.
Portanto,
-sample
é muito rápido (mais rápido do que-resize
) - mas a qualidade da saída é (geralmente) pior: você pode obter facilmente efeitos de bloqueio e aliasing extremos na saída resultante.Uma característica importante do
-sample
é que a nova imagem não conterá novas cores, embora algumas cores da imagem original possam desaparecer.redimensionamento
Esta operação funciona apenas para imagens que já tenham uma resolução desejada armazenada em seus metadados (nem todos os formatos de imagem suportam o conceito de resolução de imagem - JPEG, PNG e TIFF o fazem).
Se a imagem de origem estiver em um formato em que o suporte interno para uma resolução de imagem estiver faltando, a resolução original (assumida) da imagem deve ser especificada
-density
na linha de comando antes de especificar a-resample
resolução.escala
Ao minimizar, ele altera o tamanho da imagem simplesmente substituindo as cores de pixel, fazendo a média das respectivas cores de pixel de entrada juntas.
Ao ampliar, ele simplesmente replica os respectivos pixels de entrada para os pixels adicionais necessários.
adaptive-resize
-filter [something]
).miniatura
Ele é otimizado para velocidade.
Ele também remove quaisquer perfis de cores incorporados para reduzir o tamanho do arquivo das miniaturas.
A seguinte resposta mostra alguns exemplos (ilustrados!) Da
-resize
diretiva. Cada ilustração mostra um resultado diferente, dependendo dos 'pequenos detalhes' do método de redimensionamento exato:fonte
Como disse Ciro Santilli 新疆 改造 中心 六四 事件 法轮功:
-resize
(8,0 kB)
-amostra
(2,2kB)
-escala
(7,0 kB)
-adaptive-resize
(4,3 kB)
fonte