gpt4 book ai didi

android - 从 SurfaceView 获取位图

转载 作者:太空狗 更新时间:2023-10-29 13:50:13 38 4
gpt4 key购买 nike

我需要将 SurfaceView 的内容转换为位图。我尝试在 SurfaceView 中使用以下代码 fragment 来实现此目的:

 public final Bitmap getScreenCopy() {
Bitmap bitmap = Bitmap.createBitmap(
getWidth(),
getHeight(),
Bitmap.Config.ARGB_8888
);

Canvas temporaryCanvas = new Canvas(bitmap);
draw(temporaryCanvas); // Voodoo.

return bitmap;
}

我从那架无人机收到的位图似乎是透明的,有人知道如何解决吗?

使用 TextureView 是不可能的,因为我使用 Parrot SDK 并且无人机需要 SurfaceView 来显示框架。

最佳答案

我也一直在尝试找到一种方法来实现这一点,但到目前为止,我还没有找到一种方法来为 API 级别低于 24 的设备做到这一点。我尝试弄乱绘图缓存,但除了透明度。我没想到 drawingCache 方法无论如何都能起作用,因为 View 本身不绘制任何东西,所有内容都在 Surface 上。

对于 API 级别 24 和更高版本,您可以使用 PixelCopy APIs将全部或部分 SurfaceView 复制到位图中。

这是我的 (Kotlin) 代码的一个 fragment :

override fun getPlotBitmap(view: PlotSurfaceView) = Single.create<Bitmap> {
val plotBitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888)

val listener = PixelCopy.OnPixelCopyFinishedListener { copyResult ->
when (copyResult) {
PixelCopy.SUCCESS -> {
it.onSuccess(plotBitmap)
}
else -> {
it.onError(RuntimeException("Pixel copy failed with result $copyResult"))
}
}
}

PixelCopy.request(view, plotBitmap, listener, view.handler)
}

关于android - 从 SurfaceView 获取位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49004384/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com