ffmpeg png to png质量损失

时间:2018-04-13 20:51:31

标签: ffmpeg png data-loss lossless-compression

我做了一个python脚本,设法根据特定的模式取消洗牌(png)图像,python脚本使用ffmpeg并进行12次编码以疏忽它(通过裁剪特定部分并将其粘贴到现有图片上) 。 因此,每次都会将同一个文件重新编码为一个新文件,这不应该是一个问题,因为我正在进行png转换(无损,对吧?),但我仍然会失去它的质量。

以下是图片:

注意" ONE PUNCH MAN"文本。图片的其余部分似乎完全相同。所以问题似乎与颜色有关。

以下是我为了获得输出而运行的ffmpeg命令:

ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:200:0[t];[0:v][t]overlay=0:280" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:400:0[t];[0:v][t]overlay=0:560" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:600:0[t];[0:v][t]overlay=0:840" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:0:280[t];[0:v][t]overlay=200:0" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:400:280[t];[0:v][t]overlay=200:560" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:600:280[t];[0:v][t]overlay=200:840" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:0:560[t];[0:v][t]overlay=400:0" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:200:560[t];[0:v][t]overlay=400:280" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[0:v]crop=200:280:600:560[t];[0:v][t]overlay=400:840" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:0:840[t];[0:v][t]overlay=600:0" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:200:840[t];[0:v][t]overlay=600:280" "output/001.png"
ffmpeg -loglevel panic -y -i "output/001.png" -i "001.png" -qscale:v 2 -filter_complex "[1:v]crop=200:280:400:840[t];[0:v][t]overlay=600:560" "output/001.png"

任何人都知道为什么会有这种质量损失? 奇怪的是,当我以完全不同的方式执行时,没有质量损失(将每个方块裁剪成单个文件,然后将每个方块放入1x2 vstack中,下一个,然后每个生成的1x2使用第二个文件对文件进行vstacked以生成1x4文件,然后将每个文件hstacked以生成2x4文件,最后我们为得到的4x4输出hstack两个结果文件,即使有多个将编码量加倍。

1 个答案:

答案 0 :(得分:0)

  

尝试overlay=0:280:format=auto

谢谢,这很有效,输出看起来与输入完全一样。