我的情况如下:我将多个位图从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
答案 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);