Android 通用图像加载器:使用扩展名为FileNameGenerator时出现IllegalArgumentException

Android 通用图像加载器:使用扩展名为FileNameGenerator时出现IllegalArgumentException,android,universal-image-loader,image-loading,Android,Universal Image Loader,Image Loading,我想在使用通用图像加载器保存的图像中添加.jpg扩展名,但我们似乎不能在文件名中使用“.” public class UrlFileNameGenerator implements FileNameGenerator { @Override public String generate(String url) { return new Md5FileNameGenerator().Generate(url) + ".jpg"; } } 如何通过通用图像加载器使用.jpg扩展

我想在使用通用图像加载器保存的图像中添加.jpg扩展名,但我们似乎不能在文件名中使用“.”

  public class UrlFileNameGenerator implements FileNameGenerator {

@Override
public String generate(String url) {

    return  new Md5FileNameGenerator().Generate(url) + ".jpg";

}
}


如何通过通用图像加载器使用.jpg扩展名保存图像。如果您有任何帮助,我们将不胜感激。

使用Universal Image Loader已经很久了


因此,我认为您不需要使用文件名指定图像类型,因为它的工作方式不同,要将图像保存为
jpg
格式,您必须调用
setCompressFormat(Bitmap.CompressFormat.JPEG)
LruDiskCache
。并从文件url中删除文件类型。默认情况下,每个图像将仅另存为
PNG
类型,如从
LruDiskCache
class
default\u COMPRESS\u FORMAT=Bitmap.CompressFormat.PNG

感谢您的回复,但这可以帮助我用适当的扩展名保存文件,这样我就可以通过默认的android图像浏览器或gallery应用程序打开文件。我需要我的图像以适当的扩展名存储。我不想创建一个应用程序内的imageview来处理图像,而是希望android的imageviewer能帮我做到这一点。这就是为什么我需要用适当的扩展名保存图像。非常感谢。@Ankur Teotia-刚更改了文件名的扩展名并不意味着您的文件只保存在该格式上,扩展名只作为文件的名称uri。在您的情况下,如果您不在文件名中指定扩展名并将图像另存为
JPEG
格式,那么您的所有文件都具有
.jpg
扩展名。通用图像加载器将处理它。
FATAL EXCEPTION: uil-pool-d-3-thread-1
Process: com.example.internetwallpaper, PID: 24567
java.lang.IllegalArgumentException: keys must match regex [a-z0-9_-]    {1,64}: "1828294.jpg"
at     com.nostra13.universalimageloader.cache.disc.impl.ext.DiskLruCache.valida     teKey(DiskLruCache.java:697)
at     com.nostra13.universalimageloader.cache.disc.impl.ext.DiskLruCache.get(Di    skLruCache.java:414)
at     com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiscCache.get(Lr    uDiscCache.java:133)
at     com.nostra13.universalimageloader.core.ImageLoaderEngine$1.run(ImageLoade    rEngine.java:72)
at     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java    :1112)
at     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.jav     a:587)
 at java.lang.Thread.run(Thread.java:841)