diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-04-10 07:58:32 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-04-10 09:00:35 +0200 |
| commit | 2a97bbd1ea9db1975364b6ee96e527b2c9c8bae7 (patch) | |
| tree | 1fd6ca8799721c220c1efa7aa2ce00aaefd2b3c5 /main/src/cgeo/geocaching/network | |
| parent | 95a5e7e4884b93703ddd42cd02a23a626b482449 (diff) | |
| download | cgeo-2a97bbd1ea9db1975364b6ee96e527b2c9c8bae7.zip cgeo-2a97bbd1ea9db1975364b6ee96e527b2c9c8bae7.tar.gz cgeo-2a97bbd1ea9db1975364b6ee96e527b2c9c8bae7.tar.bz2 | |
Use the Android-provided API to stream-decode base64-encoded data
Diffstat (limited to 'main/src/cgeo/geocaching/network')
| -rw-r--r-- | main/src/cgeo/geocaching/network/HtmlImage.java | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java index bde85ee..8ee2ba7 100644 --- a/main/src/cgeo/geocaching/network/HtmlImage.java +++ b/main/src/cgeo/geocaching/network/HtmlImage.java @@ -13,7 +13,6 @@ import cgeo.geocaching.utils.Log; import cgeo.geocaching.utils.RxUtils; import ch.boye.httpclientandroidlib.HttpResponse; -import ch.boye.httpclientandroidlib.androidextra.Base64; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -43,9 +42,6 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; import java.util.Date; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -172,14 +168,15 @@ public class HtmlImage implements Html.ImageGetter { return new ImmutablePair<BitmapDrawable, Boolean>(bitmap != null ? ImageUtils.scaleBitmapToFitDisplay(bitmap) : null, - loadResult.getRight()); + loadResult.getRight() + ); } private void downloadAndSave(final Subscriber<? super BitmapDrawable> subscriber) { final File file = LocalStorage.getStorageFile(pseudoGeocode, url, true, true); if (url.startsWith("data:image/")) { if (url.contains(";base64,")) { - saveBase64ToFile(url, file); + ImageUtils.decodeBase64ToFile(StringUtils.substringAfter(url, ";base64,"), file); } else { Log.e("HtmlImage.getDrawable: unable to decode non-base64 inline image"); subscriber.onCompleted(); @@ -254,20 +251,6 @@ public class HtmlImage implements Html.ImageGetter { return false; } - private static void saveBase64ToFile(final String url, final File file) { - // TODO: when we use SDK level 8 or above, we can use the streaming version of the base64 - // Android utilities. - OutputStream out = null; - try { - out = new FileOutputStream(file); - out.write(Base64.decode(StringUtils.substringAfter(url, ";base64,"), Base64.DEFAULT)); - } catch (final IOException e) { - Log.e("HtmlImage.saveBase64ToFile: cannot write file for decoded inline image", e); - } finally { - IOUtils.closeQuietly(out); - } - } - /** * Make a fresh copy of the file to reset its timestamp. On some storage, it is impossible * to modify the modified time after the fact, in which case a brand new file must be |
