package com.buddycloud.utils; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import com.buddycloud.preferences.Preferences; public class AvatarUtils { private static final double AVATAR_DIP = 75.; private static final int MIN_SIZE = 50; private static final int MAX_SIZE = 200; private static final int THRESHOLD = 125; private AvatarUtils() {} public static String avatarURL(Context context, String channel) { int avatarSize = (int) (AVATAR_DIP * context.getResources().getDisplayMetrics().density + 0.5); String apiAddress = Preferences.getPreference(context, Preferences.API_ADDRESS); avatarSize = avatarSize > THRESHOLD ? MAX_SIZE : MIN_SIZE; return apiAddress + "/" + channel + "/media/avatar?maxheight=" + avatarSize; } public static File downSample(Context context, Uri uri) throws Exception{ Bitmap b = null; //Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; int scale = 1; if (o.outHeight > MAX_SIZE || o.outWidth > MAX_SIZE) { scale = (int)Math.pow(2, (int) Math.round(Math.log(MAX_SIZE / (double) Math.max(o.outHeight, o.outWidth)) / Math.log(0.5))); } //Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; InputStream is = context.getContentResolver().openInputStream(uri); b = BitmapFactory.decodeStream(is, null, o2); is.close(); File outputDir = context.getCacheDir(); File outputFile = File.createTempFile("avatar", ".jpg", outputDir); FileOutputStream fos = new FileOutputStream(outputFile); b.compress(Bitmap.CompressFormat.JPEG, 80, fos); fos.close(); return outputFile; } }