Estamos usando FFMPEG en nuestra aplicación Java y estoy intentando convertir un archivo tiff a jpg, pero el requisito es mantener el MISMO DPI que tiene en el archivo tiff original.
Soy nuevo en FFMPEG e intenté realizar los siguientes intentos fallidos para lograrlo:
ffmpeg -y -i test.tif test.jpg
: Convertido exitosamente a jpg pero el DPI se redujo de 300 a 96. (Verificado presionando clic derecho en la imagen --> propiedades--> pestaña de detalles --> atributos de resolución horizontal y vertical)ffmpeg -y -i test.tif -c:v copy test.jpg
: Convertido a jpg con 300 ppp, pero el formato de archivo real sigue siendo tif. Parece que solo se cambió la extensión a jpg.ffmpeg -y -i test.tif -pix_fmt <format> test.gif
(probé los 3 formatos compatibles: yuvj420p, yuvj422p yuvj444p): Convertido a jpg pero los ppp se cambian de 300 a 96.ffmpeg y -i test.tif -r 1 -q:v <range> test.jpg
(probé varios rangos: 1 a 10): El mismo problema.Probé
-q:v
y-qscale
opciones, pero solo está cambiando el ancho y el alto de la imagen.
Finalmente escuché sobre ImageMagick y el problema se resolvió en el primer intento usando el siguiente comando:
magick convert "test.tif" "test.jpg"
: convertido a jpg y ppp es 300.
¿Es posible lograr lo mismo usando FFMPEG? En caso afirmativo, por favor ayúdenme ya que estoy atrapado aquí durante mucho tiempo.
Respuesta1
Una cosa a tener en cuenta es que el DPI no tiene nada que ver con los datos de una imagen. Es una construcción basada en las capacidades de salida del hardware. Una imagen tiene tantos píxeles individuales para los cuales hay datos en el archivo. La medida de cuántos píxeles caben en una pulgada solo importa en la salida de una impresora o en la pantalla de un dispositivo. Los datos de la imagen en sí no tienen un "tamaño" inherente de píxeles. Algunos formatos de archivos de imagen admiten metadatos que pueden incluir "DPI", pero esencialmente no tienen sentido para la imagen en sí.
La información de DPI que está viendo puede ser asignada arbitrariamente por los programas que está utilizando para mostrar los archivos de imagen. Si su programa de pintura dice que la imagen tiene 300 DPI, es posible que eso no tenga nada que ver con los datos del archivo, que podrían no tener una etiqueta DPI. Los archivos TIFF pueden contener etiquetas de metadatos (por eso el formato es "formato de archivo de imagen etiquetado") como DPI, pero no importa para los datos de la imagen.
Estos conceptos parecen ser especialmente difíciles de entender para la gente, pero el hecho es que un elemento de imagen (píxel) no tiene tamaño: sólo los dispositivos de salida tienen medidas de DPI. Sospecho que su requisito de no cambiar el DPI es la idea que tiene alguien de un requisito para preservar los datos. Por cierto, dado que JPEG es un esquema de compresión con pérdida, la cantidad de compresión que aplica es mucho más importante que algunos metadatos de DPI arbitrarios. Podrías destruir estas imágenes al comprimirlas en formato JPEG conservando la etiqueta DPI.