Сделать изображение в качестве фона холста и сохранить его с рисунком пользователя - PullRequest
0 голосов
/ 07 октября 2011

Я использую код ниже. Моему приложению удалось нарисовать на холсте и сохранить его.

Но я хочу сделать изображение в качестве фона холста, чтобы при сохранении оно выглядело как изображение с рисунком пользователя поверх него.

Большое спасибо за любую помощь! :)

@Override
public void run() {
    Canvas canvas = null;
    while (_run){
        if(isDrawing == true){
            try{
                canvas = mSurfaceHolder.lockCanvas(null);
                if(mBitmap == null){
                    mBitmap =  Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888);
                }
                final Canvas c = new Canvas (mBitmap);

                c.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0xffffffff);

                commandManager.executeAll(c,previewDoneHandler);
                previewPath.draw(c);

                canvas.drawBitmap (mBitmap, 0,  0,null);
            } finally {
                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }


        }

    }

}

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Попробуйте это,

Это вернет Bitmap, который будет Merged одним из two Bitmap Images, также будет сохранено в SDCard.

public Bitmap combineImages(Bitmap c, Bitmap s) {

        Bitmap cs = null;
        int width, height = 0;

        if (c.getWidth() > s.getWidth()) {
            width = c.getWidth();
            height = c.getHeight();
        } else {
            width = s.getWidth() + s.getWidth();
            height = c.getHeight();
        }

        cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

        Canvas comboImage = new Canvas(cs);

        comboImage.drawBitmap(c, 0, 0, null);
        comboImage.drawBitmap(s, 100, 300, null);

        /******
         * 
         *   Write file to SDCard
         * 
         * ****/

        String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png";
        OutputStream os = null;
        try {
            os = new FileOutputStream(Environment.getExternalStorageDirectory()
                    + "/"+tmpImg);
            cs.compress(CompressFormat.PNG, 100, os);
        } catch (IOException e) {
            Log.e("combineImages", "problem combining images", e);
        }
        return cs;
    }
0 голосов
/ 07 октября 2011

Для любого создаваемого вами представления вы можете создать растровое изображение того, что оно отображает в данный момент. Применение:

view.setDrawingCacheEnabled(true);
Bitmap bitmap=view.getDrawingCache();

Помогает ли это вам в достижении того, что вы хотите? * не забудьте утилизировать эти растровые изображения, когда закончите.

bitmap.recycle();
...