将位图从arraylist保存到SD卡 - 保存的文件不可读

时间:2014-10-29 23:34:04

标签: android arrays arraylist bitmap save

我的情况如下:我将多个位图从arraylist保存到我的设备SD卡中的特定文件夹(成功),但是,保存的文件 - 当点击时 - 提示来自手机的消息,说明:"无法找到执行此操作的应用程序。"这个文件的文件大小与保存的位图图像的文件大小成正比,所以我有点困惑,因为设备打开图像文件没有问题,但是无法打开(或识别)这些文件作为媒体文件。

问题:什么会导致保存的图像文件(假设我已正确保存)在设备中展示此类行为,我该如何解决此问题?

额外:文件的缩略图是系统提供的两张纸相互叠加的缩略图。 arraylist从一个活动传递到当前提供方法的活动。

以下是调用将文件保存到指定文件夹/ filesdestination的方法:

private void saveImages(){
// to retrieve bitmaps
    ArrayList<Bitmap> images = getIntent().getParcelableArrayListExtra("images key");
//to retrieve bitmaps and save in specific order, while also naming them in that order
    int loopVal = 0;
    int postVal = 9;
    while ( loopVal < 9) {
        Bitmap Image = images.get(loopVal);
    try {

        String filedestination = new String(Environment.getExternalStorageDirectory()  + "/filedestination"); 
        String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
        File file = new File(filedestination, postVal + ".post_order" +  ".jpg" + timeStamp);
        File picfile = file;
         FileOutputStream fos = new FileOutputStream(picfile);
            Image.compress(Bitmap.CompressFormat.PNG, 100, fos);      
            fos.close();



    } catch (Throwable e) {

        e.printStackTrace();

    }
    postVal--;
    loopVal++;

    }


}

任何见解都将受到赞赏,

-Lucas

2 个答案:

答案 0 :(得分:0)

我认为它无法读取文件类型,因为时间戳位于文件扩展名jpg之后,并且您还将其压缩为png,因此您可能想要更改或者,类似这样的

File file = new File(filedestination, postVal + timeStamp +".post_order" +  ".png");

答案 1 :(得分:0)

您似乎正在保存压缩为PNG的.jpg文件。这可能会使图像阅读器应用程序行为不端。

更改Image.compress(Bitmap.CompressFormat.PNG, 100, fos);

Image.compress(Bitmap.CompressFormat.JPEG, 100, fos);

更改

File file = new File(filedestination, postVal + ".post_order" + ".jpg" + timeStamp);

File file = new File(filedestination, postVal + ".post_order" + ".png" + timeStamp);