Encontré varias formas de cambiar la resolución de una imagen usando convert:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
¿Cuál es la diferencia de esos?
Si necesito hacer una miniatura de imagen grande de varios tamaños con una relación de aspecto fija (es necesario recortar), ¿cuál es mi mejor opción?

Respuestas:
cambiar el tamaño
-resizeadmite una configuración adicional de-filter(¡que debería ocurrir en la línea de comandos antes de usar-resize!).-filterdetermina el algoritmo exacto que se utilizará para los colores de los píxeles añadidos en caso de ampliación, o los colores que se utilizarán para los píxeles restantes cuando se eliminen algunos de sus vecinos en caso de minificación.Para obtener una lista de filtros compatibles, simplemente ejecute
convert -list filter.-filter point -resize 400x300crea exactamente el mismo resultado que lo-sample 400x300hace, pero aún funciona un poco más lento.Si no se establece al lado (antes)
-resize, la conversión se establecerá por defecto silenciosamente en-filter Lanczoscuál es más lento, pero que genera una calidad mucho mejor (porque tiene en cuenta los colores de todos los píxeles circundantes para los nuevos agregados) que-filter pointproduce (que usa el más cercano regla de vecino para determinar el color de los píxeles recién agregados).muestra
-sampleno admite la configuración adicional de-filter; si se establece de todos modos,-filtersimplemente se ignora.Al ampliar (debido a que el tamaño de la imagen de entrada puede ser menor que
400x300), los píxeles se replican en bloques.Al minificar (porque el tamaño de la imagen de entrada puede ser mayor que
400x300), los píxeles se submuestran con un algoritmo muy simple: algunas filas y columnas simplemente se omiten.El argumento de geometría de
-sampleno admite ninguna parte de desplazamiento (a diferencia de-resize, que respeta las directivas de desplazamiento para la salida).La salida nunca tendrá más colores (diferentes) que la imagen de entrada; aunque puede tener menos colores.
Por
-samplelo tanto, es muy rápido (más rápido que-resize), pero la calidad de salida es (normalmente) peor: puede obtener fácilmente efectos extremos de bloqueo y alias en la salida resultante.Una característica importante de
-samplees que la nueva imagen no contendrá nuevos colores, aunque algunos colores de la imagen original pueden desaparecer.remuestrear
Esta operación funciona solo para aquellas imágenes que ya tienen una resolución deseada almacenada en sus metadatos (no todos los formatos de imagen admiten el concepto de resolución de imagen: JPEG, PNG y TIFF sí).
Si la imagen de origen está en un formato en el que falta el soporte interno para una resolución de imagen, entonces la resolución original (asumida) de la imagen debe especificarse a través
-densityde la línea de comando antes de especificar la-resampleresolución.escala
Al minificar, cambia el tamaño de la imagen simplemente reemplazando los colores de los píxeles promediando los respectivos colores de los píxeles de entrada juntos.
Al ampliar, simplemente replica los píxeles de entrada respectivos para los píxeles adicionales necesarios.
cambio de tamaño adaptativo
-filter [something]).miniatura
Está optimizado para la velocidad.
También elimina los perfiles de color incrustados para reducir el tamaño de las miniaturas.
La siguiente respuesta muestra algunos ejemplos (¡ilustrados!) De la
-resizedirectiva. Cada ilustración muestra un resultado diferente, dependiendo de los 'detalles finos' del método de cambio de tamaño exacto:fuente
Como dijo Ciro Santilli 新疆 改造 中心 六四 事件 法轮功:
-resize
-muestra
-escala
-adaptive-resize
fuente