0 votos

La imagen PNG redimensionada/rotacional con ImageMagic está borrosa. ¿Cómo se puede afinar?

Cuando intento redimensionar (reducir, en este caso) y/o rotar un archivo PNG, se vuelve muy borroso. Además de (obviamente) no querer una imagen borrosa, en realidad es crítico porque estas son etiquetas de envío con códigos de barras y la imagen es tan mala, que los lectores de códigos de barras realmente tienen problemas con ellos.

El comando que estoy utilizando es

% convert input_file.png -resize 288 -rotate -90 output_file.png
  • -resize 288 → cambiar el tamaño a una anchura de 288 píxeles (4 pulgadas) manteniendo la relación de aspecto. 288 es el número de píxeles para una resolución de 72DPI (impresión)
  • -rotate -90 → gira toda la imagen 90° en sentido contrario a las agujas del reloj

El archivo que se obtiene de eBay, USPS Click-n-Ship, o PayPal es una etiqueta de 4x6 pulgadas ya sea en PNG o PDF. Yo elijo PNG ya que necesito rotarlo ya que estoy usando mi impresora láser con etiquetas de tamaño carta ( Avery 8127 ). Tengo que cambiar el tamaño porque el PNG que proporcionan es enorme. Mirando el tamaño en Vista Previa, es de 17x25 pulgadas.

He investigado mucho sobre esto, pero las soluciones que he encontrado sólo mejoran marginalmente la nitidez de la imagen. El resultado final es que dependiendo del lector de código de barras puede o no leerlo. Por ejemplo, tengo dos lectores: un simple lector de códigos de barras 2D Symbol que la mayoría de las veces falla. Sin embargo, mi lector Focus 3D, más caro, lo lee con más frecuencia, pero sigue fallando a veces.

Ninguno de ellos ha funcionado.

Tenía la impresión de que si hacía una imagen más pequeña, no perdería calidad, pero no parece ser el caso. Entonces, mi pregunta es, ¿cómo puedo cambiar el tamaño de esta imagen para poder conservar la calidad?

1voto

Douglas Puntos 10417

El truco consiste en aumentar la densidad (resolución) de la imagen original antes de realizar cualquier otro procesamiento, como el cambio de tamaño o la rotación.

% convert -density 300 inputfile.png inputfile.png

Normalmente, sería necesario especificar las unidades ( -units PixelsPerInch o -units PixelsPerCentimeter ) junto con la densidad, pero como Los archivos PNG sólo utilizan la unidad de píxeles/cm No es necesario aquí.

La razón por la que tenemos que hacer esto es porque para redimensionar una imagen, ésta debe pasar por uno (o más) de varios filtros (algoritmos). Con una resolución baja (como 72 dpi para impresión) simplemente no hay suficientes datos para que los algoritmos usen para sus cálculos. ImageMagick tiene una larga sección sobre el cambio de tamaño y los diferentes filtros que puede utilizar y cómo funcionan: https://legacy.imagemagick.org/Usage/resize/#other . Desgraciadamente, ninguno funcionó bien hasta que me di cuenta de que los datos de la imagen eran demasiado "finos".

Al no hacer nada más que aumentar la densidad, estamos dando al mismo elemento (una sola línea de código de barras, por ejemplo) más puntos de datos con los que trabajar cuando manipulemos la imagen más adelante. Cuantos más tenga, más preciso será, aunque la contrapartida es la velocidad. Tardará más en procesarse.

Al hacer esto primero y luego manipular la imagen, pude lograr una imagen nítida y clara en el tamaño que necesitaba para imprimir en mi impresora láser. La otra opción que tenía era comprar una impresora de etiquetas dedicada (como las impresoras Zebra o Brother) para poder utilizar el PDF de alta calidad que suministran.

A continuación, se muestra un proceso más detallado de cómo manipular la imagen para obtener el resultado deseado


Si miramos la resolución del archivo de imagen original ( identify -ping -verbose image.png | head ) vemos que está configurado para una resolución de 28,35x28,35 ppcm y un tamaño de impresión de 42,328cm x 63,4921cm (16,66" x 25").

  Filename: sample_label_orig.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1200x1800+0+0
  Resolution: 28.35x28.35
  Print size: 42.328x63.4921
  Units: PixelsPerCentimeter
  Colorspace: Gray

Como todo es métrico, para convertir a pulgadas, multiplique por 2,54. 28 ppcm se traduce en 72 ppi (o 72 DPI). Este es supuestamente el DPI correcto para la impresión.

Puedes usar el mismo nombre de archivo tanto para la entrada como para la salida para que haga los cambios "en su sitio". Estoy usando un archivo separado para este ejemplo.

% convert -density 300 sample_label_orig.png sample_label.png 

Cuando se aumenta la densidad/resolución a 300 ppcm, todo encaja. Sin embargo, no te dejes engañar por el nuevo tamaño de impresión; ¡es 4cm x 6cm y no 4" x 6"!

  Filename: sample_label.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1200x1800+0+0
  Resolution: 300x300
  Print size: 4x6
  Units: PixelsPerCentimeter
  Colorspace: Gray

Ahora, en lugar de cambiar el tamaño de la etiqueta, simplemente especificamos la nueva geometría de la etiqueta. Tenga en cuenta que geometría no el tamaño de impresión de la etiqueta. Son las dimensiones de la etiqueta multiplicadas por la densidad. Así, una etiqueta de 4x6 pulgadas tendría 10,16x15,24 cm, lo que significa que la geometría final sería 300*(10,15x15,24) = 3048x4572.

% convert sample_label.png -geometry 3048x4572 label_out.png

Ahora, cuando miramos los detalles de la etiqueta ( identify -ping -verbose label_out.png | head ), todo es como debería ser. Es una etiqueta de 4x6 pulgadas (convertida de cm) con una resolución de 300 ppcm

  Filename: label_out.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 3048x4572+0+0
  Resolution: 300x300
  Print size: 10.16x15.24
  Units: PixelsPerCentimeter
  Colorspace: Gray

Incluso podemos girar la etiqueta al mismo tiempo que cambiamos la geometría para que el proceso sea más eficiente.

% convert sample_label.png -geometry 3048x4572 -rotate -90 label_out.png

Esto creará una etiqueta nítida y clara en la orientación correcta para ser impresa en la impresora láser.

0 votos

¿Por qué 72 ppp? Se trata de una "resolución de pantalla" no retina y no de una resolución de impresión. Las impresoras necesitarían nominalmente 300 o 360 ppp.

0 votos

Todo lo que leí decía que 72dpi era para imprimir. Cuando busqué las dimensiones ISO del papel (carta, oficio, A4, etc.) incluían la geometría de píxeles. Carta era 612x792 lo que significa 8.5x11 veces 72dpi. Incluso las etiquetas PDF con las que intenté trabajar al principio estaban a 72 ppp (corría el identify en ellos). No sé por qué es, sólo lo que he encontrado.

0 votos

300 es realmente el "estándar de la industria". Por supuesto, si vas a imprimir una valla publicitaria no lo necesitas, pero una carta impresa normal o una impresión fotográfica subcontratada sí lo sería. La mayoría de la gente no tiene ni idea de cómo funcionan los ppp, a juzgar por el número de preguntas similares en Fotografía y Diseño Gráfico en SE y en otros sitios. 612x792 ES 72 dpi, pero los resultados impresos se verían mal. 2350x3300 es una carta de EE.UU. a 300 ppp, que es a lo que tienes que aspirar. Puedes comprobar todo esto rápidamente en Photoshop si lo tienes, o probablemente en Gimp pero no lo conozco bien.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X