0

私のペイントアプリケーションでは、ペイントした画像を保存する必要があります。コードは機能していますが、画像がSDカードに保存されていません。以下のコードは私が使用したものです。

drawingSurfaceView.buildDrawingCache();
    Bitmap bmap = drawingSurfaceView.getDrawingCache();
    String extStorageDirectory = Environment.getExternalStorageDirectory()
            .toString();
    File file = new File(extStorageDirectory, "imag.PNG");
    FileOutputStream outStream;
    try {
        outStream = new FileOutputStream(file);
        bmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);

        MediaStore.Images.Media.insertImage(getContentResolver(),
                file.getAbsolutePath(), file.getName(), file.getName());

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

そのコードの何が問題になっているのか教えてください

4

1 に答える 1

0

drwaSurfaceView.setBitmap() や drwaSurfaceView.getBitmap() のようなビットマップのゲッターとセッターを使用して解決しました。私のサーフェスビュー クラスでは、'public Bitmap getBitmap() { return scaled; } を作成しました。}

public void setBitmap(Bitmap scaled) {
    this.scaled = scaled;
}`

Thread クラスでは、「class DrawThread extends Thread { private SurfaceHolder mSurfaceHolder;

    public DrawThread(SurfaceHolder surfaceHolder) {
        mSurfaceHolder = surfaceHolder;

    }

    public void setRunning(boolean run) {
        _run = run;
    }

    @Override
    public void run() {
        Canvas canvas = null;
        while (_run) {
            if (isDrawing == true) {
                try {
                    canvas = mSurfaceHolder.lockCanvas(null);

                    if (scaled == null) {
                        scaled = Bitmap.createScaledBitmap(background, w,
                                h, true);
                    }

                    if (DrawAppActivity.saveBtnFlag == 1) {
                        DrawAppActivity.saveBtnFlag = 0;
                        final Canvas c = new Canvas(scaled);
                        commandManager.executeAll(c);
                        canvas.drawBitmap(scaled, 0, 0, null);
                        commandManager.executeAll(canvas);
                    } else {
                        canvas.drawBitmap(scaled, 0, 0, fillPaint);
                        commandManager.executeAll(canvas);
                    }

                } finally {
                    mSurfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}`
于 2012-10-05T07:31:28.340 に答える