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