从文件夹中检索图像:Android

时间:2013-12-10 12:02:51

标签: android

public void onPictureTaken(byte[] data, Camera camera) 
         {

            Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Folder/Raw Image");
            imagesFolder.mkdirs(); 
            Date d = new Date();
            CharSequence s  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
            File output = new File(imagesFolder, s.toString() + ".jpg");

            Uri uriSavedImage = Uri.fromFile(output);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            OutputStream imageFileOS;

            try {
                imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
                imageFileOS.write(data);
                imageFileOS.flush();
                imageFileOS.close();

                Toast.makeText(AndroidCamera.this, 
                        "Image saved: ", 
                        Toast.LENGTH_LONG).show();

                } 
            catch (FileNotFoundException e) 
                {
                e.printStackTrace();
                } 
            catch (IOException e)
            {
                e.printStackTrace();
            } 
            finally
            {}
            Log.d("Log", "onPictureTaken - jpeg");
File filenew = new File(android.os.Environment.getExternalStorageDirectory(),"Folder/Raw Image");

             bitmap=BitmapFactory.decodeFile(filenew.getAbsolutePath());

每次拍摄图像时,图像保存到文件夹“文件夹”中的子文件夹“Raw Image”。我需要检索此图像以进行进一步处理。所以我使用了Bitmapfactory.options。所有这一切都必须在一键按下完成。必须处理保存的每个图像。我怎样才能以这种方式检索。

2 个答案:

答案 0 :(得分:0)

如果您正在拍照,那么您可以startActivityForResult,在此过程中您必须使用URIURI是您为图片指定的路径。

现在,在onActivityResult(..)来电期间,您可以执行以下操作:

try {
    Bitmap thumb = MediaStore.Images.Media.getBitmap(
            activity.getContentResolver(), fileUri);
    photo.setImageBitmap(thumb);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

fileUri是我所谈论的图片的URI。此处photoImageView。此外,在使用不同设备时,您可能会收到错误,因此我建议您将URI路径保存在SharedPreference中。

答案 1 :(得分:0)

你指的是错误的道路:

Environment.getExternalStorageDirectory().toString() + "/"+ Folder + "Raw Image"+ ".jpg";

但你已经创建了这样的文件夹,

  File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Folder/Raw Image"); 

试试这种方式,它可能对你有帮助。

  File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Folder/RawImage");
        imagesFolder.mkdirs(); 

        File output = new File(imagesFolder,"temp" + ".jpg");

上面我们已经声明了一个静态文件名。每次图像捕获都将替换该文件。 现在你知道了文件路径,

String mFilePath =  Environment.getExternalStorageDirectory() +  "Folder/RawImage/temp.jpg";

您可以通过以下方式使用此文件路径来显示位图。

myImage.setImageUri(Uri.fromFile(new File("Your file path")));
Or with:
myImage.setImageUri(Uri.parse(new File("Your file path").toString()));

您可以获取位图:

Bitmap bmp=BitmapFactory.decodeStream(getContentResolver().openInputStream(Your image URI));