-2

从网络保存图像时出现问题。

我创建新文件夹并将所有图像保存到此。问题是我希望这个文件夹首先按最后一个下载图像排序,但是当我打开图库时,该文件夹按创建的图像日期排序,下载图像中创建的日期不是我下载的时间,而是它第一次创建的时间. 我已经在 stack over flow 上进行了搜索,发现 java 无法将图像中创建的日期修改为我下载它的时间。

任何人有解决方案?(抱歉英语不好)

谢谢你的评论。我将解释更多细节。

首先,我从网上下载图片到缓存目录

HttpURLConnection localHttpURLConnection = (HttpURLConnection) new java.net.URL(urldisplay).openConnection(); 
localHttpURLConnection.setConnectTimeout(30000);
localHttpURLConnection.setReadTimeout(30000);
localHttpURLConnection.setInstanceFollowRedirects(true);
InputStream in = localHttpURLConnection.getInputStream();
File localFile = Constans.fileCache.getCacheFile(urldisplay);
FileOutputStream fos = new FileOutputStream(localFile);
Utils.CopyStream(in, fos); // simple copy by trunks
fos.close();

其次,我将下载的图像复制到外部存储

File toFile = new File(Environment.getExternalStorageDirectory() + "/folder", "folder_" + System.currentTimeMillis() + ".png");
FileOutputStream fos = new FileOutputStream(toFile);
Utils.CopyStream(new FileInputStream(fromFile), fos);
fos.close();

// Scan image to display when open with gallery otherwise it couldn't see in gallery
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(toFie);
mediaScanIntent.setData(contentUri);
mContext.sendBroadcast(mediaScanIntent);

最后,我看到那个画廊在我下载的时候没有对我的图像进行排序。这就是我要解决的问题。

4

1 回答 1

0

不确定我是否理解,但让我们尝试一下。

首先,您提到的问题比 java 代码问题更具体到 Gallery 应用程序。我假设图库使用 EXIF 信息按拍摄日期排序图片,而不是下载/复制它们。不幸的是,画廊不提供任何选项来对其他订单中的图片进行排序。

也许您可以尝试使用另一个资源管理器,它允许您按其他顺序对图片进行排序(也许 ESFileExplore 有更多选项?)

终极解决方案:您可以尝试使用 java EXIF 库更改图片中的 EXIF 以修改图片拍摄日期,这应该会更改它们在画廊中出现的顺序(但非常丑陋的解决方案......)。谷歌 5 秒后的一些随机 EXIF 库:http: //drewnoakes.com/code/exif/ http://www.toanthang.net/modules.php?name=News&new_topic=2&catid=7

希望这有助于蒂埃里

于 2013-02-02T18:11:04.110 回答