From 9fc7a1b980863955a139193ded0fef5edfbad296 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 5 Apr 2014 21:06:10 +0200 Subject: added button to open images --- .../conversations/persistance/FileBackend.java | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/eu/siacs/conversations/persistance/FileBackend.java (limited to 'src/eu/siacs/conversations/persistance/FileBackend.java') diff --git a/src/eu/siacs/conversations/persistance/FileBackend.java b/src/eu/siacs/conversations/persistance/FileBackend.java new file mode 100644 index 00000000..05c50530 --- /dev/null +++ b/src/eu/siacs/conversations/persistance/FileBackend.java @@ -0,0 +1,76 @@ +package eu.siacs.conversations.persistance; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.math.BigInteger; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.util.Log; + +import eu.siacs.conversations.entities.Conversation; + + +public class FileBackend { + + private static int IMAGE_SIZE = 1920; + + private Context context; + + public FileBackend(Context context) { + this.context = context; + } + + + public File copyImageToPrivateStorage(Conversation conversation, Uri image) { + try { + InputStream is = context.getContentResolver().openInputStream(image); + String prefix = context.getFilesDir().getAbsolutePath(); + String path = prefix+"/"+conversation.getAccount().getJid()+"/"+conversation.getContactJid(); + String filename =new BigInteger(""+System.currentTimeMillis()).toString(32) + ".webp"; + File file = new File(path+"/"+filename); + file.getParentFile().mkdirs(); + file.createNewFile(); + OutputStream os = new FileOutputStream(file); + Bitmap originalBitmap = BitmapFactory.decodeStream(is); + is.close(); + int w = originalBitmap.getWidth(); + int h = originalBitmap.getHeight(); + boolean success; + if (Math.max(w, h) > IMAGE_SIZE) { + int scalledW; + int scalledH; + if (w<=h) { + scalledW = (int) (w / ((double) h/IMAGE_SIZE)); + scalledH = IMAGE_SIZE; + } else { + scalledW = IMAGE_SIZE; + scalledH = (int) (h / ((double) w/IMAGE_SIZE)); + } + Bitmap scalledBitmap = Bitmap.createScaledBitmap(originalBitmap, scalledW,scalledH, true); + success = scalledBitmap.compress(Bitmap.CompressFormat.WEBP, 75, os); + } else { + success = originalBitmap.compress(Bitmap.CompressFormat.WEBP, 75, os); + } + if (!success) { + Log.d("xmppService","couldnt compress"); + } + os.close(); + return file; + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return null; + } +} -- cgit v1.2.3