package com.keju.maomao.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
/**
* 图片处理工具类
*
* @author Zhoujun
*
*/
public class ImageUtil {
/**
* drawable 转换成 bitmap
*
* @param drawable
* @return
*/
public static Bitmap drawableToBitmap(Drawable drawable) {
int width = drawable.getIntrinsicWidth(); // 取 drawable 的长宽
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565; // 取 drawable 的颜色格式
Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应
// bitmap
Canvas canvas = new Canvas(bitmap); // 建立对应 bitmap 的画布
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas); // 把 drawable 内容画到画布中
return bitmap;
}
/**
* 图片加上圆角效果
*
* @param drawable
* 需要处理的图片
* @param percent
* 圆角比例大小
* @return
*/
public static Bitmap getRoundCornerBitmapWithPic(Drawable drawable, float percent) {
Bitmap bitmap = drawableToBitmap(drawable);
return getRoundedCornerBitmapWithPic(bitmap, percent);
}
/**
* 图片加上圆角效果
*
* @param bitmap
* 要处理的位图
* @param roundPx
* 圆角大小
* @return 返回处理后的位图
*/
public static Bitmap getRoundedCornerBitmapWithPic(Bitmap bitmap, float percent) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, bitmap.getWidth() * percent, bitmap.getHeight() * percent, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
/**
* 把文本中的表情文字转换成表情图片(图片来自资源文件)
*
* @param emotionMap
* 表情图片资源文件的Map〈String, Integer〉
* @param wbTxt
* 整个文本
* @param context
* @return
*/
public static SpannableString changeTextToEmotions(Map<String, Integer> emotionMap, String wbTxt, Context context) {
SpannableString spann = new SpannableString(wbTxt);
if (wbTxt != null && !"".equals(wbTxt)) {
for (Entry<String, Integer> entry : emotionMap.entrySet()) {
int res = entry.getValue();
String key = entry.getKey();
int begin = 0;
int starts = 0;
int end = 0;
while (wbTxt.indexOf(key, begin) != -1) {
Bitmap bitmap = ImageUtil.getBitMapByRes(context, res);
Drawable drawable = new BitmapDrawable(bitmap);
if (drawable != null) {
drawable.setBounds(5, 5, 30, 30);
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
starts = wbTxt.indexOf(key, begin);
end = starts + key.length();
spann.setSpan(span, starts, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
begin = starts + 1;
}
}
}
}
return spann;
}
/**
* 获得某个图片资源的BitMap对象
*
* @param context
* @param drawableId
* @return
*/
public static Bitmap getBitMapByRes(Context context, int drawableId) {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(), drawableId, opts);
opts.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), drawableId, opts);
return bitmap;
}
/**
* 头像文件名
*
* @param sid
* @return
*/
public static String createAvatarFileName(String sid) {
return "avatar_" + sid + ".jpg";
}
/**
* 用当前时间给取得的图片命名
*
*/
public static String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmsss");
return dateFormat.format(date) + ".jpg";
}
/**
* 设置imageview高宽
*
* @param imageView
* @param width
* @param height
*/
public static void resetViewSize(final ImageView imageView, int width,
int height) {
LayoutParams lp = imageView.getLayoutParams();
lp.width = width;
lp.height = height;
imageView.setLayoutParams(lp);
}
}