我正在使用TextureVIEw for CameraPrevIEw.由于显示比率和预览比率之间的差异,我在onSurfaceTextureAvailable()中使用textureVIEw.settransform(矩阵)来缩放预览.当我需要textureVIEw的截图时,我使用textureVIEw.getBitmap(),但在某些型号的智能手机中,getBitmap()会忽略预览的缩放.为什么会这样?
解决方法:
当我需要在显示之前对相机预览进行后期处理时,我发现了同样的问题.
看起来原始相机捕获是getBitmap()中出现的内容,而不是最终显示的转换后的视图.
我解决了以下问题,它只是在拔出Bitmap后应用相同的转换:
TextureVIEw textureVIEw = (TextureVIEw) findVIEwByID( R.ID.texture );Matrix m = new Matrix();// Do matrix creation here.textureVIEw.settransform( m );// When you need to get the BitmapBitmap bitmap = textureVIEw.getBitmap();bitmap = Bitmap.createBitmap( bitmap, 0, 0, bitmap.getWIDth(), bitmap.getHeight(), textureVIEw.gettransform( null ), true );
我注意到Bitmap没有像在原始视图中那样被裁剪.在我的例子中,TextureVIEw已经裁剪了图像的顶部和底部,而Bitmap仍然是全尺寸的.基本上,默认情况下,看起来TextureVIEw使用等效的“centerCrop”来显示原始源.我将相应的ImageVIEw设置为使用androID:scaleType =“centerCrop”并且视图具有相同的方面.
当然,这意味着我正在处理更多我真正需要的图像,但是我还没有弄清楚如何在处理之前完全裁剪出TextureVIEw正在做的事情.
总结以上是内存溢出为你收集整理的android – TextureView getBitmap()忽略setTransform全部内容,希望文章能够帮你解决android – TextureView getBitmap()忽略setTransform所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)