Converter TIFF para JPG usando FFMPEG mantendo o mesmo DPI

3

Estamos usando o FFMPEG em nosso aplicativo java e estou tentando converter um arquivo tiff para jpg, mas o requisito é manter o mesmo DPI como no arquivo original do tiff.

Eu sou novo no FFMPEG e tentei seguir tentativas fracassadas de conseguir isso:

  1. ffmpeg -y -i test.tif test.jpg : convertido com sucesso para jpg, mas o DPI reduziu de 300 para 96. (Verificado pressionando clique com o botão direito na imagem - > propriedades - > guia detalhes - > atributos de resolução horizontal e vertical)
  2. ffmpeg -y -i test.tif -c:v copy test.jpg : convertido para jpg com 300 dpi, mas o formato real do arquivo ainda é tif. Parece que apenas a extensão é alterada para jpg.
  3. ffmpeg -y -i test.tif -pix_fmt <format> test.gif (tentou todos os 3 formatos suportados: yuvj420p, yuvj422p yuvj444p): convertido para jpg, mas o dpi foi alterado de 300 para 96.
  4. ffmpeg y -i test.tif -r 1 -q:v <range> test.jpg (tentou vários intervalos: 1 a 10): o mesmo problema.

  5. Tentou as opções -q:v e -qscale , mas está apenas alterando a largura e a altura da imagem.

Finalmente, ouvi falar sobre o ImageMagick e o problema foi resolvido na primeira tentativa usando o seguinte comando:

  1. magick convert "test.tif" "test.jpg" : convertido para jpg e dpi é de 300.

É possível conseguir o mesmo usando o FFMPEG? Se sim, por favor me ajude como eu estou preso aqui por muito tempo.

    
por Anuj 07.02.2018 / 10:26

1 resposta

0

Uma coisa a perceber é que o DPI não tem nada a ver com os dados em uma imagem. É uma construção baseada em recursos de saída de hardware. Uma imagem tem tantos pixels individuais, para os quais existem dados no arquivo. A medição de quantos pixels cabem em uma polegada só é importante na saída de uma impressora ou exibição em um dispositivo. Os dados da imagem em si não têm "tamanho" inerente de pixels. Alguns formatos de arquivo de imagem suportam metadados que podem incluir "DPI", mas são essencialmente sem sentido para a própria imagem.

As informações de DPI que você está vendo podem ser atribuídas arbitrariamente pelos programas que você está usando para exibir os arquivos de imagem. Se o seu programa de pintura diz que a imagem é de 300 DPI, isso pode não ter nada a ver com os dados no arquivo, o que pode não ter uma tag DPI. Os arquivos TIFF podem conter tags de metadados (é por isso que o formato é "formato de arquivo de imagem marcado"), como DPI, mas não importa os dados da imagem.

Esses conceitos parecem ser especialmente difíceis para as pessoas entenderem, mas o fato é que um elemento de imagem (pixel) não tem um tamanho - apenas os dispositivos de saída têm medidas de DPI. Sua exigência para não mudar o DPI é a idéia de alguém de um requisito para preservar os dados, eu suspeito. BTW, como o JPEG é um esquema de compactação com perdas, a quantidade de compactação que você aplica é muito mais importante do que alguns metadados DPI arbitrários. Você pode estar destruindo essas imagens ao compactá-las no formato JPEG, preservando o rótulo DPI.

    
por 07.02.2018 / 16:01