"Quiero cambiar DPI con Imagemagick sin cambiar el tamaño de byte real de los datos de imagen".
¡Esto es completamente imposible!
Porque:
more "Dots per Inch"
<==> more pixels per area
<==> more total pixels per image
<==> more total bytes per image
Tampoco parece entender qué es DPI en realidad:
- Es un valor completamente abstracto que obtiene un valor práctico solo en el contexto de conocer también el tamaño absoluto de la impresión o representación en pantalla o monitor:
- Puede 'imprimir' la misma imagen de 72x72 píxeles en un cuadrado de 1 pulgada de ancho: la impresión tendrá una resolución de
72dpi
.
- También puede 'imprimirlo' en un cuadrado de 1/4 de pulgada de ancho: entonces la impresión tendrá una resolución de
288dpi
.
- ( Nota: si lo 'imprime' en
288dpi
un cuadrado de 1 pulgada, ya no es la misma imagen: habrá sufrido una extrapolación a través del controlador de la impresora o algún otro mecanismo de filtrado, y se habrá convertido en una imagen de 288x288 píxeles en lugar de una imagen de 72x72 píxeles ... )
- Ambas impresiones tendrán la misma información de imagen: la imagen de 288 ppp no tendrá repentinamente más.
Si desea imprimir la imagen original de 72x72 píxeles como un cuadrado de 1 pulgada de ancho, pero a la vez 288dpi
, tendrá que reescalar la imagen (en este caso, ampliarla). Por cada 1 píxel en el original, necesitará 4 píxeles de la nueva imagen mejorada. Ahora hay diferentes algoritmos que se pueden usar para calcular qué valores de color deben tener estos 4 píxeles (3 de ellos nuevos píxeles):
- podría darles lo mismo que el píxel original (que es un algoritmo muy "en bruto",
- o puede hacer un promedio del valor de color del píxel original con los valores de color de los píxeles vecinos.
En cualquier caso, está creando una imagen más grande que consta de 288 filas de píxeles que tienen 288 píxeles de alto cada uno (288x288 píxeles).
Lo que Gimp hace por usted cuando pasa por "Imagen -> Tamaño de impresión": simplifica el proceso de volver a calcular los cambios necesarios en los tamaños absolutos de píxeles, lo que lo hace más fácil de usar. Para este propósito...
- ... primero le pregunta sobre el DPI porque una impresora determinada no puede cambiar su resolución de impresión de forma arbitraria (algunos pueden ofrecer no solo una, sino incluso 2 o 3 resoluciones diferentes). Por lo tanto, le pregunta a qué resolución desea imprimir. Esa es la primera información.
- ... entonces también pide la segunda pieza de información: en la que el tamaño (en
cm
, mm
o inch
) la impresión debe aparecer en papel.
De acuerdo con estas dos piezas de información, Gimp calcula el número total de píxeles que debe usar (extrapolar a partir del número original de píxeles) para llenar el espacio solicitado en la resolución solicitada.
Sin embargo, ampliar una imagen ráster haciendo que contenga más píxeles no le agrega información real, y solo le agrega 'calidad', lo cual es ficticio. Puede parecer mejor para el ojo humano si su algoritmo de escalamiento es 'bueno'. Y se verá feo, si solo duplica, triplica o cuadruplica los píxeles existentes, como hacen algunos algoritmos simples.
Para imágenes ráster,
la configuración de DPI solo es relevante en el contexto de impresión o visualización . Debido a que las impresoras o monitores han dado resoluciones fijas. Por lo tanto, es información que solo ...
- ... un controlador de impresora o
- ... una aplicación de procesamiento de imágenes que admite la impresión
necesito saber.
Y la documentación de ImageMagick está totalmente de acuerdo conmigo:
-density width
-density widthxheight
Establezca la resolución horizontal y vertical de una imagen para renderizar en dispositivos.
Sin embargo, para imágenes vectoriales o formatos de archivo (como PDF o PostScript), la configuración de DPI es extremadamente importante en el contexto de rasterizarlos . Un DPI más alto transferirá más información de la imagen al formato ráster y, por lo tanto, conservará más detalles de la calidad original real. Al convertir una imagen vectorial de un tamaño dado enmm
,cm
oinch
en una trama con un DPI más alto, se traducirá directamente en un mayor número de píxeles totales en la imagen.
Además, ImageMagick no admite 'impresión' como tal. En cambio, ImageMagick solo ...
- ... convierte archivos de un formato ráster dado a otros formatos ráster;
- ... o reduce o aumenta las imágenes ráster;
- ... o cambia los valores de color de acuerdo con un algoritmo específico;
- ... o recorta imágenes, las superpone, las invierte, las refleja;
- ...Y qué no....
... pero para imprimir las imágenes manipuladas, debe usar un programa diferente.
Algunos formatos de imagen (TIFF, PNG, ...) admiten almacenar internamente una configuración de DPI en sus metadatos.
Pero esto no es más que un atributo 'pista' que no altera la imagen ráster subyacente. Esa es la razón por la que hiciste este descubrimiento:
"Cuando reviso el archivo, permanece igual".
Esta 'sugerencia' posiblemente puede ser evaluada automáticamente por controladores de impresora o por programas de creación de páginas como LaTeX. En ausencia de tales 'sugerencias' de DPI (o si de alguna manera no se presentan de la manera que LaTeX espera que lo hagan), LaTeX aún debería poder ordenar que renderice cualquier imagen dada en una página de la manera que uno espera a - solo necesita un código LaTeX más explícito alrededor de la imagen.
Algunos otros formatos de imagen (JPEG (?), BMP, ...) ni siquiera admiten almacenar una sugerencia de DPI en sus metadatos internos.
Por lo tanto, Gimp solo admite lo que ves que está haciendo con "Imagen -> Tamaño de impresión" porque quiere imprimir una imagen. Con ImageMagick no puede imprimir.
Siga haciendo lo que quiera hacer con Gimp cuando imprima. No tiene sentido con ImageMagick.
Consulte también este fragmento adicional de documentación de MI , que explica el mismo tema en diferentes palabras.
Entonces, lo que queda es esto:
- Si 'manipula' su imagen con Gimp y luego incrusta el resultado en LaTeX, la página se verá como la esperaba.
- Si 'manipula' su imagen con ImageMagick y luego incrusta el resultado en LaTeX, la página no se verá como esperaba.
Proporcione lo siguiente para resolver el problema anterior:
- la versión exacta de su instalación de ImageMagick (salida completa de
convert -version
y convert -list configure
);
- (un enlace a una) imagen de muestra original;
- (un enlace a) la misma imagen manipulada por Gimp;
- (un enlace a) la misma imagen manipulada por ImageMagick.
De esta manera podemos ayudar a resolver el problema.
Pero tenga en cuenta: este es un problema diferente de lo que pregunta su tema / título actual: "Quiero cambiar DPI con Imagemagick sin cambiar el tamaño de byte real de los datos de imagen"
Actualizar
Como todavía no está claro para algunos lectores lo que noté anteriormente, aquí hay un intento más ...
Cualquier cosa que se indique como 'Resolución' o 'Densidad' dentro de un archivo de imagen, es un atributo de metadatos . No tiene influencia sobre el número de píxeles reales descritos por el archivo y es completamente irrelevante a este respecto. Es solo una pista que un dispositivo de impresión o renderizado o una aplicación puede seguir o no al imprimir, renderizar o mostrar la imagen.
Para este propósito, es solo un número almacenado en el archivo de imagen. Estos números le indican a los dispositivos de salida, como impresoras, y muestran cuántos puntos (o píxeles) por pulgada debe mostrarse la imagen. Para formatos vectoriales como PostScript, PDF, MWF y SVG, le dice a la escala de píxeles que dibuje las coordenadas del mundo real utilizadas por la imagen.
Un ejemplo, donde una aplicación NO respeta el valor de resolución observado por ImageMagick dentro de los metadatos de la imagen , es Adobe Photoshop. Photoshop almacena sus sugerencias sobre la resolución de impresión o visualización deseada en un perfil propietario llamado 8bim . ImageMagick no toca este perfil, incluso cuando se le pide que escriba un cambio de resolución en los metadatos de un archivo de imagen. Photoshop, por otro lado, ignorará todas las sugerencias de resolución almacenadas por ImageMagick en el campo de metadatos estándar que se define para este propósito tan pronto como vea su propio perfil 8bim .
El OP debería haber elegido el título:
- 'Quiero cambiar DPI (sugerencia de resolución de metadatos) con ImageMagick sin cambiar el número real de píxeles en la imagen'
para evitar todos los malentendidos ...
^
icono a la izquierda de su respuesta), no solo 'aceptarla' tan pronto como tenga suficiente reputación personal (creo que necesita +15) ...