Qual è la differenza per gli operatori di campionamento / ricampionamento / scala / ridimensionamento / ridimensionamento adattivo / miniatura in ImageMagick convert?


87

Ho trovato diversi modi per modificare la risoluzione di un'immagine utilizzando convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

Qual è la differenza tra quelli?

Se devo creare miniature di immagini di dimensioni diverse con proporzioni fisse (ritaglio necessario), qual è la scelta migliore?



Risposte:


140

ridimensionare

-resize 400x300+20+30(come la -scalee -sampleesempi di seguito) converte un input a un'immagine di uscita che ha le dimensioni di pixel 400x300. Inoltre, sposta l'output di 20 pixel a destra e di 30 pixel in basso. Inoltre, ci sono alcune altre differenze tra -scale:

  • -resizesupporta un'impostazione aggiuntiva di -filter(che dovrebbe verificarsi sulla riga di comando prima dell'uso -resize!).

  • -filter determina l'esatto algoritmo da utilizzare per i colori dei pixel aggiunti in caso di ingrandimento, o per i colori da utilizzare per i pixel rimanenti quando alcuni dei loro vicini vengono rimossi in caso di minimizzazione.

  • Per un elenco dei filtri supportati, eseguire semplicemente convert -list filter.

  • -filter point -resize 400x300crea esattamente lo stesso risultato di -sample 400x300, ma funziona ancora un po 'più lentamente.

  • Se non impostato accanto (prima) -resize, la conversione verrà automaticamente impostata su -filter Lanczosquale è più lenta, ma che genera una qualità molto migliore (perché tiene conto dei colori di tutti i pixel circostanti per quelli appena aggiunti) rispetto a quella -filter pointprodotta (che utilizza il più vicino regola del vicino per determinare il colore di un pixel appena aggiunto).

campione

-sample 400x300converte un'immagine di input in un'immagine di output che ha le dimensioni in pixel di 400x300. Tuttavia, ci sono alcune differenze molto importanti per -resize:

  • -samplenon supporta l'impostazione aggiuntiva di -filter; se impostato comunque, -filterviene semplicemente ignorato.

  • Durante l'ingrandimento (poiché la dimensione dell'immagine in ingresso potrebbe essere inferiore a 400x300), i pixel vengono replicati in blocchi.

  • Durante la minimizzazione (poiché la dimensione dell'immagine in ingresso può essere maggiore di 400x300), i pixel vengono sottocampionati con un algoritmo molto semplice: alcune righe e colonne vengono semplicemente saltate.

  • L' argomento della geometria su -samplenon supporta alcuna parte offset (a differenza di -resize, che rispetta le direttive offset per l'output).

  • L'output non avrà mai più (diversi) colori rispetto all'immagine in ingresso; potrebbe avere meno colori però.

  • Pertanto -sampleè molto veloce (più veloce di -resize), ma la qualità dell'output è (di solito) peggiore: puoi facilmente ottenere effetti di blocco e alias estremi nell'output risultante.

  • Una caratteristica importante di -sampleè che la nuova immagine non conterrà nuovi colori, sebbene alcuni colori dell'immagine originale potrebbero scomparire.

ricampionare

-resampleutilizza come parametro la XxY risoluzione desiderata , non la geometria dei XxYpixel dell'immagine di destinazione. Lo scopo di questo operatore è preservare le dimensioni di rendering di un'immagine: supponiamo che la tua immagine misuri 4 pollici per 3 pollici su un dispositivo che la esegue il rendering a 300 DPI. Quindi chiedere un o ridimensionerà l'immagine in modo che misuri (di nuovo) 4 pollici per 3 pollici su un dispositivo a 72 DPI.-resample 72-resample 72x72

  • Questa operazione funziona solo per tali immagini che hanno già una risoluzione desiderata memorizzata nei loro metadati (non tutti i formati di immagine supportano il concetto di una risoluzione di immagine - JPEG, PNG e TIFF lo fanno).

  • Se l'immagine di origine è in un formato in cui manca il supporto interno per una risoluzione dell'immagine, la risoluzione originale (presunta) dell'immagine deve essere specificata tramite -densitysulla riga di comando prima di specificare la -resamplerisoluzione.

scala

-scale 400x300produce il risultato equivalente (ma è più veloce, perché evita tutta l'elaborazione del filtro) come fa usando -filter box -resize 400x300. Inoltre ignora completamente qualsiasi -filterimpostazione corrente .

  • Durante la minimizzazione, cambia la dimensione dell'immagine semplicemente sostituendo i colori dei pixel calcolando la media dei rispettivi colori dei pixel di input insieme.

  • Durante l'ingrandimento, replica semplicemente i rispettivi pixel di input per i pixel aggiuntivi richiesti.

ridimensionamento adattivo

-adaptive-resize 400x300non supporta (o ignora, se impostato) la parte offset di un parametro di geometria e ignora anche l' -gravityimpostazione se presente.

  • Utilizza per impostazione predefinita la triangolazione dipendente dai dati durante il ridimensionamento (a meno che il metodo di ridimensionamento non venga sovrascritto specificando ulteriormente -filter [something]).

miniatura

-thumbnailfunziona proprio come -resizefa, con alcune differenze:

  • È ottimizzato per la velocità.

  • Rimuove inoltre tutti i profili colore incorporati per ridurre la dimensione del file delle miniature.


La risposta seguente mostra alcuni esempi (illustrati!) Della -resizedirettiva. Ogni illustrazione mostra un risultato diverso, a seconda dei "dettagli precisi" del metodo di ridimensionamento esatto:


4
Grazie, questo ha molto più senso della documentazione di ImageMagick.
Paul Brannan

Se avessi delle immagini di esempio, sarebbe ancora più perfetto :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

@KurtPfeifle: Prima di tutto, grazie per la risposta altamente informativa. Per favore, potete suggerire un buon libro o un pdf di documentazione per Imagemagick. L'approccio migliore che ho in questo momento è raschiare tutte le pagine di Imagemagick per ridurre il tempo di lettura, ma si tratta di molte informazioni (che a mio parere non sono sempre abbastanza descrittive). Qualsiasi aiuto è molto apprezzato.
saurabheights

7

Come detto da Ciro Santilli 新疆 改造 中心 六四 事件 法轮功:

Se avessi delle immagini di esempio, sarebbe ancora più perfetto :-)

-ridimensionare

Google gioca con -resize (8.0 kB)

-campione

-campione (2,2 kB)

-scala

-scala (7.0 kB)

-adaptive-resize

inserisci qui la descrizione dell'immagine (4,3 kB)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.