Это звучит просто, но я не могу загрузить растровое изображение, которое я взял с камерой, в свое приложение. Ну, технически я могу, но ничего не получается.Загрузка Bitmap из ExternalStorage
Я использую этот код для съемки на onClick
:
count++;
file = dir+count+".jpg";
File newfile = new File(file);
try {
newfile.createNewFile();
} catch (IOException e) {}
Uri outputFileUri = Uri.fromFile(newfile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
Где
dir
- final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
И этот код для загрузки изображения:
String location = new String(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/" + count + ".jpg");
Bitmap myBitmap = BitmapFactory.decodeFile(location);
Bitmap mutableBitmap = myBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
wv2.draw(canvas);
tstImage.setImageBitmap(mutableBitmap);
text.setText(Float.toString(myBitmap.getHeight()) + " " + Float.toString(myBitmap.getWidth()) + " px");
Где
count
- Целое число, которое представляет имя образа
wv2
- пользовательский WebView, в котором я рисовать холст.
Я не думаю, что эти строки актуальны, но не помешает разместить дополнительную информацию - вы никогда не знаете.
Canvas canvas = new Canvas(mutableBitmap);
wv2.draw(canvas);
В этой строке отображается текст с размерами изображения. Я использую его, чтобы проверить, загружаю ли я растровое изображение.
text.setText(Float.toString(myBitmap.getHeight()) + " " + Float.toString(myBitmap.getWidth()) + " px");
Когда я бегу не получает отображается этот код изображения, но текст показывает правильные размеры, что должно означать, что я загрузить растровое изображение. Что я делаю не так? В чем проблема?
[UPDATE]
Я думаю, что я делаю успехи. Теперь у меня проблема outOfMemory, и приложение падает.
String path = Environment.getExternalStorageDirectory()+ "/Pictures/" + count + ".jpg";
File imgFile = new File(path);
if(imgFile.exists()){
Bitmap mBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
tstImage.setImageBitmap(mBitmap);
} else {
Log.d("Ciaren", "File doesn't exist");
}
Как вы убедитесь, что изображение, которое вы снимаете с камеры, имеет тот же путь, который вы определили выше в коде? – Pankaj
Обновлен мой код –