如何从Android中的特定位置获取Canvas的Bitmap?

时间:2014-06-12 12:04:52

标签: android bitmap android-canvas

我从画布中捕获了位图,但是它采用了我的整个Drawview。但是我想从画布的特定位置获取位图。我在画布上画了一幅画,那时我有MinX,MaxX和MinY,MaxY位置根据这个位置,我想在这个位置采取位图。是否可能?。

我从canvas获取Bitmap的代码:

public void save(View v)
    {
        Log.v("log_tag", "Width: " + v.getWidth());
        Log.v("log_tag", "Height: " + v.getHeight());
        if(mBitmap == null)
        {
            mBitmap =  Bitmap.createBitmap (mContent.getWidth(), mContent.getHeight(), Bitmap.Config.RGB_565);;
        }
        Canvas canvas = new Canvas(mBitmap);
        try
        {
            FileOutputStream mFileOutStream = new FileOutputStream(mypath);

            v.draw(canvas);
            mBitmap.compress(Bitmap.CompressFormat.PNG, 90, mFileOutStream);
            mFileOutStream.flush();
            mFileOutStream.close();
            String url = Images.Media.insertImage(getContentResolver(), mBitmap, "title", null);
            Log.v("log_tag","url: " + url);
            //In case you want to delete the file
            //boolean deleted = mypath.delete();
            //Log.v("log_tag","deleted: " + mypath.toString() + deleted);
            //If you want to convert the image to string use base64 converter

        }
        catch(Exception e)
        {
            Log.v("log_tag", e.toString());
        }
    } 

1 个答案:

答案 0 :(得分:0)

想象一下你的代码是这样的:

Bitmap mDrawBitmap;
Canvas mBitmapCanvas;
Paint drawPaint = new Paint();

@Override
public void onDraw(Canvas canvas) {

    if (mDrawBitmap == null) {
        mDrawBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
        mBitmapCanvas = new Canvas(mDrawBitmap);
    }

    // draw on the btimapCanvas
    //... and more
    mBitmapCanvas.drawWhatever(...);

    // after drawing with the bitmapcanvas,
    //all drawn information is stored in the Bitmap       

    // draw everything to the screen
    canvas.drawBitmap(mDrawBitmap, 0, 0, drawPaint);
}

然后,您可以使用此代码段裁剪原始 Bitmap

public void save() {

    // crop the bitmap to your desired dimensions
    Bitmap cropped = Bitmap.createBitmap(mDrawBitmap, startX, startY, width, height);

    //... do the saving
}