从外部文件加载Android Bitmap到画布上

3
我使用以下代码从资源文件夹中获取位图,将其放入可绘制对象中,并将其绘制到画布上。
 Drawable f = getResources().getDrawable(R.drawable.harris1);
 f.setBounds(a,120,a+200,270);
 f.draw(canvas);

我希望能够从我的设备上的图片目录中获取位图,并在画布上绘制它。

我通过以下方式获取文件路径:

 File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
 String name = "harris1.jpg";
 File file = new File(path, name );
 String fileName = String.format("%s/" + name, path);

在这个例子中,文件名等于“/storage/emulated/0/Pictures/harris1.jpg”。
我如何更改以下行:
Drawable f = getResources().getDrawable(R.drawable.harris);
以使用设备上图片的文件名?
任何帮助都将不胜感激。
马克
3个回答

1
如何尝试这样的内容:
Bitmap bitmap = BitmapFactory.decodeFile(pathToFile);
canvas.drawBitmap(bitmap, ...);

我尝试了以下代码:Bitmap bitmap = BitmapFactory.decodeFile(fileName); canvas.drawBitmap(bitmap, new Rect(a,120,a+200,270), rectangle, null); 但是在单词“rectangle”下面出现了一个错误,请问“rectangle”的值是多少? - Mark Barr
尝试将两个相等的矩形放在那里,新的矩形为 Rect(a,120,a+200,270)。 - Andrew
抱歉,出现错误 06-04 06:13:28.206: E/AndroidRuntime(9993): java.lang.NullPointerException 06-04 06:13:28.206: E/AndroidRuntime(9993): at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1083) - Mark Barr
这段代码可以将矩形放置在正确的位置和大小,但是它是空白的,不显示位图。Bitmap bitmap = BitmapFactory.decodeFile("/storage/emulated/0/Pictures/harris1.jpg"); canvas.drawBitmap(bitmap, new Rect(a,120,a+200,270), new Rect(a,120,a+200,270), null); - Mark Barr
1
这段代码实现了canvas.drawBitmap(bitmap,null, new Rect(a,120,a+200,270), null);,将源矩形设为null。 - Mark Barr

0
你可能会喜欢这段代码:
ImageView myImageView = (ImageView)findViewById(R.id.imageview);
BitmapDrawable imagePath = new BitmapDrawable(getResources(), "/storage/emulated/0/Pictures/harris1.jpg");
myImageView.setImageBitmap(imagePath.getBitmap());

我没有ImageView,我正在尝试将其打印到画布上,然后将其保存为PDF。使用来自资源的内容可以正常工作,但是我无法弄清如何使用设备中的图像。 - Mark Barr

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接