Esta é uma imagem tiff de entrada, que eu quero converter para JPG/PNG. googledrive-link-to-download-amostra
Como regra geral, sempre uso o seguinte comando para converter entre 2 formatos de imagem (principalmente JPG para PNG).convert input.jpg out.png
Mas:
convert input.tiff out.png
produz a seguinte imagem. Você poderia apontar por que converter TIF para PNG não está funcionando corretamente. Isso tem a ver com espaço de cores/compressões?
Apenas no caso: $identify input.tiff
dá
input.tiff TIFF 640x480 640x480+0+0 8-bit YCbCr 619120B 0.000u 0:00.000
Além disso, mais informações sobre como as imagens foram feitas:
ffmpeg -hide_banner -loglevel error -y -f video4linux2 -i /dev/video0 -vframes 1 fname.tiff;
Esse é o
YCbCr
ponto importante: esse espaço de cores (é um espaço de cores de vídeo, não RGB) não é convertido, então o PNG que você produz tem uma anotação de espaço de cores em algum lugar e seu visualizador de PNG não respeita essa anotação, ou o seuconvert
está com erros e não t faça a conversão do espaço de cores mesmo que seja necessário.convert
tem-colorspace
opção, então a primeira coisa que eu tentaria é definir explicitamente os espaços de cores de origem e destino e ver se os converte dessa maneira.Além disso, como as imagens de entrada parecem ser em preto e branco, considere converter para um PNG em escala de cinza (que precisaria apenas do canal Y ou de intensidade).
Como as informações do espaço de cores fazem parte do TIFF (é parcialmente o que o T significa: há informações reais sobre a estrutura da imagem no arquivo, ele está marcado ), isso significa que seu conversor está fazendo algo errado (ou, seu arquivo de entrada está quebrado de uma forma que seu outro visualizador possa lidar "incorretamente" com "com sucesso").
Portanto, solução alternativa: não use
convert
/imagemagick (que também é uma das maiores fontes de vulnerabilidades de servidor na história da web). É lento como o inferno, de qualquer maneira, na minha experiência.Tente
econvert
do projeto ExactImage .Fora isso, Python PIL / Pillow pode funcionar lindamente; este é literalmente o primeiro exemplo em seu tutorial (minimamente modificado); salve isso em um arquivo de texto, marque-o como executável e use-o em seus arquivos.
A solução que encontrei foi primeiro converter
YCbCr
paraRGBA
usar tiff2rgba . (incluído nolibtiff
pacote). Em seguida, converta esse tiff RGB para qualquer outro formato.Informação adicional:
Se você tiver respostas mais compactas, como usar apenas
imagemagick
semtiff2rgba
, ou mesmo souber por que isso aconteceria, sinta-se à vontade para compartilhar. Obrigada.