2011-01-20 40 views
6

Tôi sợ đã có câu trả lời không may cho câu hỏi này nhưng chỉ trong trường hợp ... Tôi đang sử dụng SurfaceView để xử lý ảnh với bitmap (ánh sáng và sửa đổi màu) và tôi sẽ cần nhập bitmap đã sửa đổi (tức là nội dung của SurfaceView) trong một bitmap mới để tôi có thể lưu nó dưới dạng tệp hình ảnh.Android: tạo bitmap có nội dung SurfaceView

Tôi đã nhìn xung quanh và có vẻ như có thể lấy bitmap từ View.getDrawingCache() nhưng nó không hoạt động với SurfaceView. Tất cả những gì tôi nhận được là một bitmap trống.

Có giải pháp nào cho vấn đề này không?

Cảm ơn

Trả lời

7

Bạn có thể vẽ SurfaceView của mình lên Canvas được Bitmap hỗ trợ không?

// 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); 
+0

Tôi muốn sử dụng giải pháp này nhưng không thể thực hiện với SurfaceView vì quy trình vẽ được thực hiện trong một chủ đề và canvas được lấy từ SurfaceHolder. Nó được sử dụng theo cách này: canvas = surfaceHolder.lockCanvas (null); đồng bộ (surfaceHolder) {doDraw (canvas); } –

+7

Sự cố được giải quyết. Tôi đã thay đổi SurfaceView thành Chế độ xem tùy chỉnh đơn giản. Sau đó, kích hoạt drawingCache (setDrawingCacheEnabled (true)) khi khung nhìn được tạo, tôi có thể lấy một bitmap gọi phương thức getDrawingCache(). –

+0

cho nhận xét đầu tiên của bạn, bạn không thể gọi doDraw với Canvas bitmap được sao lưu? 'if (screenGrab) {doDraw (c_fromMyPost); } else {doDraw (canvas_fromYourApp); } ' – idbrii

Các vấn đề liên quan