diff --git a/GlideImageLoader/src/main/java/com/vansz/glideimageloader/GlideImageLoader.java b/GlideImageLoader/src/main/java/com/vansz/glideimageloader/GlideImageLoader.java index 6dfecd8..f845c56 100644 --- a/GlideImageLoader/src/main/java/com/vansz/glideimageloader/GlideImageLoader.java +++ b/GlideImageLoader/src/main/java/com/vansz/glideimageloader/GlideImageLoader.java @@ -61,7 +61,7 @@ public boolean onResourceReady(final File resource, Object model, Target t @Override public File getCache(String url) { - File cacheFile = new File(getCacheDir(), getFileName(url)); + File cacheFile = new File(getCacheDir(), getCacheFileName(url)); return cacheFile.exists() ? cacheFile : null; } @@ -84,8 +84,14 @@ public File getCacheDir() { return cacheDir; } - private String getFileName(String imageUrl) { - String[] nameArray = imageUrl.split("/"); + @Override + public String getCacheFileName(String url) { + int paramsStartIndex = url.indexOf("?"); + if (paramsStartIndex!=-1){ + url = url.substring(0,paramsStartIndex); + } + String[] nameArray = url.split("/"); return nameArray[nameArray.length - 1]; } + } diff --git a/PicassoImageLoader/src/main/java/com/vansz/picassoimageloader/PicassoImageLoader.java b/PicassoImageLoader/src/main/java/com/vansz/picassoimageloader/PicassoImageLoader.java index d090137..87a57e3 100644 --- a/PicassoImageLoader/src/main/java/com/vansz/picassoimageloader/PicassoImageLoader.java +++ b/PicassoImageLoader/src/main/java/com/vansz/picassoimageloader/PicassoImageLoader.java @@ -157,10 +157,7 @@ public void run() { @Override public File getCache(String url) { - // 通过分析 OkHttp3Downloader 源码可知缓存文件名是图片 url 经过 md5 加密后的小写字符串,并拼接 ".1" - // .0 表示缓存文件的网络请求 header 描述; .1 是缓存文件本身 - String key = EncryptUtils.encryptMD5ToString(url).toLowerCase() + ".1"; - File cacheFile = new File(getCacheDir(), key); + File cacheFile = new File(getCacheDir(), getCacheFileName(url)); return cacheFile.exists() ? cacheFile : null; } @@ -179,4 +176,11 @@ public File getCacheDir() { if (!cacheDir.exists()) cacheDir.mkdirs(); return cacheDir; } + + @Override + public String getCacheFileName(String url) { + // 通过分析 OkHttp3Downloader 源码可知缓存文件名是图片 url 经过 md5 加密后的小写字符串,并拼接 ".1" + // .0 表示缓存文件的网络请求 header 描述; .1 是缓存文件本身 + return EncryptUtils.encryptMD5ToString(url).toLowerCase() + ".1"; + } } diff --git a/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageLoader.java b/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageLoader.java index 5a155fc..fabf01d 100644 --- a/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageLoader.java +++ b/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageLoader.java @@ -36,6 +36,9 @@ public interface ImageLoader { File getCacheDir(); + + String getCacheFileName(String url); + /** * 清除 ImageLoader 缓存 */ diff --git a/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageProcessor.java b/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageProcessor.java index 46f2c76..d550d90 100644 --- a/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageProcessor.java +++ b/Transferee/src/main/java/com/hitomi/tilibrary/loader/ImageProcessor.java @@ -56,8 +56,8 @@ private void init() { } public void process(Context context, final String key, final File sourceFile, final File savedDir, - final Point displaySize, @NonNull ImageProcessCallback callback) { - final File targetFile = new File(savedDir, getFileName(key)); + final Point displaySize,@NonNull String cacheFileName, @NonNull ImageProcessCallback callback) { + final File targetFile = new File(savedDir, cacheFileName); if (!isNeedProcess(sourceFile, displaySize.x, displaySize.y) || ImageUtils.getImageType(sourceFile) == TYPE_GIF) { // 不需要处理的图片和 gif 图,直接复制到指定文件夹 @@ -73,7 +73,7 @@ public void run() { callback.onSuccess(targetFile); } else { callbackMap.put(key, callback); - execService.execute(new ImageTask(context, key, sourceFile, savedDir)); + execService.execute(new ImageTask(context, key, sourceFile, savedDir,cacheFileName)); } } @@ -92,11 +92,6 @@ private boolean isNeedProcess(final File source, final int maxWidth, final int m return needAdjustOrientation || w > maxWidth || h > maxHeight; } - private String getFileName(String imageUrl) { - String[] nameArray = imageUrl.split("/"); - return nameArray[nameArray.length - 1]; - } - private int getImageOrientation(String sourcePath) { try { ExifInterface exifInfo = new ExifInterface(sourcePath); @@ -172,15 +167,17 @@ public void handleMessage(Message msg) { private class ImageTask implements Runnable { private Context context; private String key; + private String cacheFileName; private File originFile; private File savedDir; - public ImageTask(Context context, String key, File originFile, File savedDir) { + public ImageTask(Context context, String key, File originFile, File savedDir, String cacheFileName) { this.context = context; this.key = key; this.originFile = originFile; this.savedDir = savedDir; + this.cacheFileName = cacheFileName; } @Override @@ -192,7 +189,7 @@ public void run() { .ignoreBy(150) .setTargetDir(savedDir.getAbsolutePath()) .get(); - File targetFile = new File(savedDir, getFileName(key)); + File targetFile = new File(savedDir, cacheFileName); File compressFile; if (files != null && !files.isEmpty()) { compressFile = files.get(0); diff --git a/Transferee/src/main/java/com/hitomi/tilibrary/transfer/TransferState.java b/Transferee/src/main/java/com/hitomi/tilibrary/transfer/TransferState.java index 82b8ad5..7fbf3ca 100644 --- a/Transferee/src/main/java/com/hitomi/tilibrary/transfer/TransferState.java +++ b/Transferee/src/main/java/com/hitomi/tilibrary/transfer/TransferState.java @@ -98,9 +98,11 @@ TransferImage createTransferImage(ImageView originImage, boolean bindListener) { void startPreview(final TransferImage targetImage, final File source, final String imgUrl, final StartPreviewCallback callback) { targetImage.enableGesture();// 启用 TransferImage 的手势缩放功能 - final File cacheDir = transfer.getTransConfig().getImageLoader().getCacheDir(); + ImageLoader loader = transfer.getTransConfig().getImageLoader(); + final File cacheDir = loader.getCacheDir(); + String cacheFileName = loader.getCacheFileName(imgUrl); ImageProcessor.getInstance().process(transfer.getContext(), imgUrl, source, - cacheDir, getDisplaySize(), new ImageProcessor.ImageProcessCallback() { + cacheDir, getDisplaySize(), cacheFileName,new ImageProcessor.ImageProcessCallback() { @Override public void onSuccess(File file) { if (ImageUtils.getImageType(file) == TYPE_GIF) { diff --git a/UniversalImageLoader/src/main/java/com/vansz/universalimageloader/UniversalImageLoader.java b/UniversalImageLoader/src/main/java/com/vansz/universalimageloader/UniversalImageLoader.java index 9180b6d..a0f9e07 100644 --- a/UniversalImageLoader/src/main/java/com/vansz/universalimageloader/UniversalImageLoader.java +++ b/UniversalImageLoader/src/main/java/com/vansz/universalimageloader/UniversalImageLoader.java @@ -138,4 +138,10 @@ public File getCache(String url) { public File getCacheDir() { return ImageLoader.getInstance().getDiskCache().getDirectory(); } + + @Override + public String getCacheFileName(String url) { + String[] nameArray = url.split("/"); + return nameArray[nameArray.length - 1]; + } }