我正在使用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;
}
它适用于此代码。但是,我仍然不明白为什么会这样做。如果我缩放原始和奇数宽度的图像,我是否必须确保我的宽度也是奇数?我想明白这一点。