我正在使用以下内容向视频添加叠加层;但是效果不佳,因为它需要处理每个像素(如果您以50帧/秒的速度进行全高清,这是很多工作!)
private static byte[] convert(BufferedImage image, int opacity)
{
int imgWidth = image.getWidth();
int imgHeight = image.getHeight();
byte[] buffer = new byte[imgWidth * imgHeight * 4]
int imgLoc = 0;
for(int y=0; y < imgHeight; y++)
{
for(int x=0; x < imgWidth; x++)
{
int argb = image.getRGB(x, y);
imgBuffer[(imgLoc*4)+0] = (byte)((argb>>0)&0x0FF);
imgBuffer[(imgLoc*4)+1] = (byte)((argb>>8)&0x0FF);
imgBuffer[(imgLoc*4)+2] = (byte)((argb>>16)&0x0FF);
int alpha = ((argb>>24)&0x0FF);
if (opacity < 100)
alpha = (alpha*opacity)/100;
imgBuffer[(imgLoc*4)+3] = (byte)alpha;
imgLoc++;
}
}
如何重新编写此代码以提高性能?我已经尝试了许多不同的方法,例如:
但是这些似乎都不起作用。叠加层不会显示,而较慢的方法至少会显示叠加层。
PS:我知道上面的函数将ARGB转换为ABGR;稍后再解决。叠加层仍应显示,尽管颜色不同