Я хочу взять изображение с камеры и сохранить его и просмотреть его из внутреннего хранилища.Android - Как сохранить и получить изображение из внутреннего хранилища
Я использую этот код для съемки с камеры.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PIC);
Я попытался выполнить следующее, чтобы сохранить растровое изображение во внутренней памяти.
public String saveToInternalSorage(Bitmap bitmapImage, String fileName){
File file = new File(createBasePath(), fileName + ".png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return file.getName();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PIC && resultCode == RESULT_OK) {
Intent i=new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(output), "image/png");
startActivity(i);
}
}
Мой путь /data/user/0/com.dev/app/1454351400000/33352/capture_Image1.png
Но здесь я столкнулся один вопрос. Размер бит-карты очень мал. Я хочу точный образ, что я взял с камеры.
Тогда я нашел одно решение. Задайте путь до намерения. Поэтому я пробовал вот так.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
output = new File(createBasePath(), "capture_Image1" + ".png");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
startActivityForResult(intent, TAKE_PIC);
Когда я использую этот код, изображение не отображается. на onActivityResult
resultCode
, показывающий -1.
Если я использую следующий код
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File dir= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
output=new File(dir, "CameraContentDemo.png");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
startActivityForResult(intent, TAKE_PIC);
Этот код работает отлично. После того, как изображение будет показано.
Поэтому, пожалуйста, дайте мне знать и сохраните изображение из внутреннего db с оригинальным качеством.
Если вы планируете хранить в SQLite, иметь в виду, что курсор вы получаете имеет предел 1 Мбайт, так что если вы храните байт, вероятно, вы не получите изображение. Сохраните путь вместо этого и получите изображение с пути. – Fustigador