android–TextureView getBitmap()忽略setTransform

android–TextureView getBitmap()忽略setTransform,第1张

概述我正在使用TextureViewforCameraPreview.由于显示比率和预览比率之间的差异,我在onSurfaceTextureAvailable()中使用textureView.setTransform(矩阵)来缩放预览.当我需要textureView的截图时,我使用textureView.getBitmap(),但在某些型号的智能手机中,getBitmap()会忽略预览的缩

我正在使用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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1119153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存