我正在使用 libswscale(来自 FFMPEG)将 1920x1080 UYVY422 图像缩放到以编程方式确定的大小,具体取决于我们要渲染到的大小窗口。
在调整“画布”的大小时,我注意到图像的颜色会在正常和无效(不正确的颜色)之间来回变化。
在分析了颜色无效的尺寸后,我注意到当宽度为偶数像素时,图像总是看起来是正确的。
1920x1080 scaled to 867x488
doesn't work
1920x1080 scaled to 1016x572
works
19280x1080 scaled to 975x548
doesn't work
19280x1080 scaled to 962x541
works
从那以后,我更新了我的代码以始终缩放到均匀的宽度。
if ((targetSize.cx % 2) != 0)
{
targetSize.cx = targetSize.cx - 1;
}
它适用于此代码。但是,我仍然不明白它为什么这样做。如果我缩放原始宽度为奇数的图像,我是否必须确保我的宽度也是奇数?我想明白这一点。