1

我正在使用用户输入的数据以编程方式绘制到画布上。输入所有数据后,用户可以翻阅图像并将它们绘制到画布上。用户可以选择保存所有图像(可能是几百张)。我使用在 UI 线程上运行的可运行对象,该线程将绘制并保存每个图像(因为您无法从 AsyncTask 绘制到画布)。这可行,但我遇到的问题是,如果在保存过程中,用户关闭屏幕或最小化应用程序。这会导致 jpeg 只是黑色。我希望保存的东西可以在后台运行并且仍然有效。

用于绘制到画布并保存图像的代码:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Bitmap bitmap;
    bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    canvas.setBitmap(bitmap);

    // draw everything here

    OutputStream stream = new FileOutputStream(imageName + ".jpg");
    bitmap.compress(CompressFormat.JPEG, 100, stream);
    stream.close();
}

那么,有没有办法在画布不可见的情况下绘制图像并将其保存到背景文件中?任何帮助,将不胜感激!

4

1 回答 1

-1
I think you can use this:

signLayout.setDrawingCacheEnabled(true); //signLayout is layout that contains image you want to save
    // Save image from layout
    String path = "sdcard0/test/test.jpg"; //file path you want to save
    gestureSign.save(signLayout, path);

保存方法

//Save to path
public void save(View v, String SavePath) 
{
    if(mBitmap == null)
    {
        mBitmap =  Bitmap.createBitmap (layoutSign.getWidth(), layoutSign.getHeight(), Bitmap.Config.RGB_565);;
    }
    Canvas canvas = new Canvas(mBitmap);
    try
    {
        FileOutputStream mFileOutStream = new FileOutputStream(SavePath);
        v.draw(canvas); //Lay toan bo layout
        mBitmap.compress(Bitmap.CompressFormat.PNG, 100, mFileOutStream); 
        mFileOutStream.flush();
        mFileOutStream.close();
    }
    catch(Exception e) 
    { 
        Log.v("log_tag", e.toString()); 
    } 
}
于 2013-06-28T04:28:24.790 回答