Android: создание растрового изображения с содержимым SurfaceView - PullRequest
9 голосов
/ 20 января 2011

Боюсь, что у меня уже есть неудачный ответ на этот вопрос, но на всякий случай ... Я использую SurfaceView для обработки изображений с растровыми изображениями (изменения освещения и цветов), и мне нужно будет импортировать измененныйрастровое изображение (т.е. содержимое SurfaceView) в новом растровом изображении, чтобы я мог сохранить его в виде файла изображения.

Я осматривался, и кажется, что можно получить растровое изображение из View.getDrawingCache (), но он не работает с SurfaceView.Все, что я получаю, - это пустое растровое изображение.

Есть ли какое-нибудь решение для этого?

Спасибо

Ответы [ 3 ]

6 голосов
/ 20 января 2011

Можете ли вы нарисовать свой SurfaceView на холсте, который поддерживается растровым изображением?

    // be sure to call the createBitmap that returns a mutable Bitmap
    Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b);
    yourSurfaceView.draw(c);
2 голосов
/ 20 сентября 2016

Нет простого способа захвата кадров SurfaceView , поэтому вы можете рассмотреть возможность использования TextureView вместо SurfaceView: растровое изображение может быть получено с использованием textureView.getBitmap() метода.

0 голосов
/ 11 января 2019

Для уровней API> = 24 используйте PixelCopy API . Вот пример внутри ImageView:

public void DrawBitmap(){
    Bitmap surfaceBitmap = Bitmap.createBitmap(600, 600, Bitmap.Config.ARGB_8888);
    PixelCopy.OnPixelCopyFinishedListener listener = copyResult -> {
        // success/failure callback
    };

    PixelCopy.request(YourSurfaceView, surfaceBitmap,listener,getHandler());
    // visualize the retrieved bitmap on your imageview
    setImageBitmap(plotBitmap);
    }
}
...