package com.jasonette.seed.Helper; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.Uri; import android.os.Environment; import android.util.Log; import com.bumptech.glide.Glide; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; import java.util.Iterator; public class JasonImageHelper { public interface JasonImageDownloadListener { public void onLoaded(byte[] data, Uri uri); } private JasonImageDownloadListener listener; private String url; private Context context; private byte[] data; public JasonImageHelper(String url, Context context) { // set null or default listener or accept as argument to constructor this.listener = null; this.url = url; this.context = context; } public JasonImageHelper(byte[] data, Context context){ this.listener = null; this.data = data; this.context = context; } public void setListener(JasonImageDownloadListener listener) { this.listener = listener; } public void load(){ try { File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png"); FileOutputStream out = new FileOutputStream(file); out.write(this.data); out.close(); Uri bitmapUri = Uri.fromFile(file); this.listener.onLoaded(this.data, bitmapUri); } catch (Exception e) { Log.d("Error", e.toString()); } } public void fetch(){ try { // Constructing URL GlideUrl url; LazyHeaders.Builder builder = new LazyHeaders.Builder(); // Add session if included SharedPreferences pref = context.getSharedPreferences("session", 0); JSONObject session = null; URI uri_for_session = new URI(this.url.toLowerCase()); String session_domain = uri_for_session.getHost(); if(pref.contains(session_domain)){ String str = pref.getString(session_domain, null); session = new JSONObject(str); } // Attach Header from Session if(session != null && session.has("header")) { Iterator<?> keys = session.getJSONObject("header").keys(); while (keys.hasNext()) { String key = (String) keys.next(); String val = session.getJSONObject("header").getString(key); builder.addHeader(key, val); } } url = new GlideUrl(this.url, builder.build()); if (this.url.matches("\\.gif")) { /* Glide .with(context) .load(url) .asGif() .into((ImageView)view); */ } else { int width = 512; int height = 384; Glide .with(context) .load(url) .asBitmap() .into(new SimpleTarget<Bitmap>(width, height) { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { Uri bitmapUri = null; try { File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png"); FileOutputStream out = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); out.close(); bitmapUri = Uri.fromFile(file); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); listener.onLoaded(byteArray, bitmapUri); } catch (Exception e) { Log.d("Error", e.toString()); } } }); } } catch (Exception e){ Log.d("Error", e.toString()); } } }