X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fandroid%2FImageUtilsAndroid.java;h=c2e269cc58291cfbcb32d2e105c7d63938c6e136;hb=d46b7b96f94e88a776bcd2dfd756549ffb300cc9;hp=f198862437754f0883d6ecc77dbacf03c55d4eb7;hpb=7b42695f536a88cfc5fed57e98687394e3c42fe9;p=fanfix.git diff --git a/src/be/nikiroo/utils/android/ImageUtilsAndroid.java b/src/be/nikiroo/utils/android/ImageUtilsAndroid.java index f198862..c2e269c 100644 --- a/src/be/nikiroo/utils/android/ImageUtilsAndroid.java +++ b/src/be/nikiroo/utils/android/ImageUtilsAndroid.java @@ -1,11 +1,14 @@ package be.nikiroo.utils.android; import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.util.stream.Stream; import be.nikiroo.utils.Image; import be.nikiroo.utils.ImageUtils; @@ -18,6 +21,13 @@ import be.nikiroo.utils.StringUtils; * @author niki */ public class ImageUtilsAndroid extends ImageUtils { + @Override + protected boolean check() { + // If we can get the class, it means we have access to it + Config c = Config.ALPHA_8; + return true; + } + @Override public void saveAsImage(Image img, File target, String format) throws IOException { @@ -35,7 +45,7 @@ public class ImageUtilsAndroid extends ImageUtils { } // Some formats are not reliable - // Second change: PNG + // Second chance: PNG if (!ok && !format.equals("png")) { ok = image.compress(Bitmap.CompressFormat.PNG, 90, fos); } @@ -62,15 +72,28 @@ public class ImageUtilsAndroid extends ImageUtils { * in case of IO error */ static public Bitmap fromImage(Image img) throws IOException { - byte[] array = img.getData(); - int size = array.length; - Bitmap image = BitmapFactory.decodeByteArray(array, 0, size); - if (image == null) { - String ssize = StringUtils.formatNumber(size); - throw new IOException( - "Failed to convert input to image, size was: " + ssize); - } + InputStream stream = img.newInputStream(); + try { + Bitmap image = BitmapFactory.decodeStream(stream); + if (image == null) { + String extra = ""; + if (img.getSize() <= 2048) { + try { + extra = ", content: " + + new String(img.getData(), "UTF-8"); + } catch (Exception e) { + extra = ", content unavailable"; + } + } + String ssize = StringUtils.formatNumber(img.getSize()); + throw new IOException( + "Failed to convert input to image, size was: " + ssize + + extra); + } - return image; + return image; + } finally { + stream.close(); + } } }