转换为可变位图会创建一个空白位图

时间:2018-08-07 02:37:13

标签: android android-canvas android-bitmap

我正在从文件输出流中加载图像,当我使用图像视图测试图像时,图像显示出来,但是当我将其转换为可变位图以显示在画布上时,该位图似乎没有有任何图像数据。可变的位图宽度和高度正确。

在这里我将制作图像文件:

    public static boolean makeImageResource(Bitmap bitmap, String ID) {

    ContextWrapper cw = new ContextWrapper(Drawing.getDrawingActivity().getApplicationContext());

    File directory = cw.getDir("files", Context.MODE_PRIVATE);

    File mypath=new File(directory,ID);

    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(mypath, false);

        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("IO EXCEPTION");
        }
    }
    return true;
}

这里是我要获取图像文件的位置(请注意,由于我已经使用图像视图对其进行了测试,因此图像本身不是空白的):

    public File getFilePath(String ID) {
    ContextWrapper cw = new ContextWrapper(Drawing.getDrawingActivity().getApplicationContext());

    File directory = cw.getDir("files", Context.MODE_PRIVATE);

    File f = new File(directory, ID);
    return f;
}

最后在这里我将尝试制作可变的位图并将其设置为画布背景:

public void init(DisplayMetrics metrics, String fileID, ImageView view) {

    ResourceFinderRV rfrv = new ResourceFinderRV();

    Bitmap workingBitmap = BitmapFactory.decodeFile(rfrv.getFilePath(fileID).getAbsolutePath());

    mBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);


    mCanvas = new Canvas(mBitmap);

    currentColor = DEFAULT_COLOR;
    strokeWidth = BRUSH_SIZE;
}

我不知道这是否重要,但是我试图创建一个绘图应用程序并保存绘图,所以我包括了onDraw函数:

@Override
protected void onDraw(Canvas canvas) {
    canvas.save();
    mCanvas.drawColor(backgroundColor);

    for (FingerPath fp : paths) {
        mPaint.setColor(fp.color);
        mPaint.setStrokeWidth(fp.strokeWidth);


        mCanvas.drawPath(fp.path, mPaint);

    }

    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
    canvas.restore();
}

我真的不知道自己在做什么错,感谢您的帮助。

这是我要显示在mCanvas上的图像

https://imgur.com/a/y6mmndq

0 个答案:

没有答案