我正在制作视频会议应用。
在NDK侧,我从解码器获取YUV420中的图像,因此我使用http://wss.co.uk/pinknoise/yuv2rgb/将其转换为RGB8888到Android位图。
然后我将位图打印到表面视图中 一切正常,我很高兴。
现在我正在尝试使用textureview而不是surfaceview(以简化视图层次结构/合成)。我有一个非常奇怪的结果:只渲染我的位图的最后一个像素。而且它们处于适当的位置。
Canvas canvas = lockCanvas();
if (canvas == null)
return ;
canvas.drawRGB(0, 0, 0);
canvas.save();
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.restore();
unlockCanvasAndPost(canvas);
纹理视图应呈现:
|------------------|
|xxxxxx |
|xxxxxx |
|xxxxxx |
| |
| |
|------------------|
这就是它所呈现的内容。
|------------------|
| xx |
| xx |
| xx |
| |
| |
|------------------|
最奇怪的是,这两个像素列是正确的。它们是位图每行的最后两个像素。它们在正确的位置正确呈现。
这是一个已知的错误吗?
我有什么问题吗?
答案 0 :(得分:0)
似乎每个像素的alpha分量都存在问题。
在位图上调用setHasAlpha(false)
解决了问题。