gpt4 book ai didi

android - MediaProjection 产生扭曲的屏幕截图

转载 作者:行者123 更新时间:2023-12-04 23:48:03 25 4
gpt4 key购买 nike

我设法得到截图,但结果是这样的:

Screenshot produced

原来的:

Original

这是我从几个来源获取的代码:

final ImageReader ir = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
VirtualDisplay vd= mediaProjection.createVirtualDisplay("screen", width, height, dpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC, ir.getSurface(), null, null);

final String path=getActivity().getFilesDir().getAbsolutePath()+"/myscreen.jpg";
ir.setOnImageAvailableListener(new OnImageAvailableListener() {

// @Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
FileOutputStream fos = null;
Bitmap bitmap = null;

try {
image = ir.acquireLatestImage();
fos = new FileOutputStream( path);
final Image.Plane[] planes = image.getPlanes();
final Buffer buffer = planes[0].getBuffer().rewind();
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap.compress(CompressFormat.JPEG, 85, fos);
image.close();

} catch (Exception e) {
e.printStackTrace();
........
........

最佳答案

这是你的位图的宽度和高度,至少你扭曲的图像看起来就像我看到的一样。这是我如何让它工作的。

int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * imageReader.getWidth();
bitmap = Bitmap.createBitmap(imageReader.getWidth() + rowPadding / pixelStride,
imageReader.getHeight(), Bitmap.Config.ARGB_8888);

并且使用 imageReaders 宽度/高度(不是图像)很重要。

创建 imageReader/virtualDisplay 对象时,我使用以下方法获取显示指标。
   public static DisplayMetrics getScreenMetrics(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

Display display = wm.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);

return dm;
}

...
ImageReader imageReader = ImageReader.newInstance(displayMetrics.widthPixels, displayMetrics.heightPixels, PixelFormat.RGBA_8888, 2);

我从反复试验中学到了这一点,所以我很抱歉无法解释原因。

关于android - MediaProjection 产生扭曲的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092071/

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