73 lines
2.4 KiB
Java
73 lines
2.4 KiB
Java
package com.uiui.aios.utils;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.BitmapFactory;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.PixelFormat;
|
|
import android.graphics.drawable.AdaptiveIconDrawable;
|
|
import android.graphics.drawable.BitmapDrawable;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.os.Build;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
public class BitmapUtils {
|
|
public static Bitmap Bytes2Bimap(byte[] b) {
|
|
if (b.length != 0) {
|
|
return BitmapFactory.decodeByteArray(b, 0, b.length);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static byte[] Bitmap2Bytes(Bitmap bitmap) {
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
|
|
byte[] data = baos.toByteArray();
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* Drawable转换成一个Bitmap
|
|
*
|
|
* @param drawable drawable对象
|
|
* @return
|
|
*/
|
|
public static final Bitmap drawableToBitmap(Drawable drawable) {
|
|
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
|
|
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
|
|
Canvas canvas = new Canvas(bitmap);
|
|
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
|
drawable.draw(canvas);
|
|
return bitmap;
|
|
}
|
|
|
|
|
|
public static Bitmap drawableToBitamp(Drawable drawable) {
|
|
Bitmap bitmap;
|
|
BitmapDrawable bd = (BitmapDrawable) drawable;
|
|
bitmap = bd.getBitmap();
|
|
return bitmap;
|
|
}
|
|
|
|
public static Bitmap getIconBitmap(Context context, Drawable drawable) {
|
|
try {
|
|
if (drawable == null) {
|
|
return null;
|
|
}
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && drawable instanceof AdaptiveIconDrawable) {
|
|
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
|
|
Canvas canvas = new Canvas(bitmap);
|
|
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
|
|
drawable.draw(canvas);
|
|
return bitmap;
|
|
} else {
|
|
return ((BitmapDrawable) drawable).getBitmap();
|
|
}
|
|
} catch (Exception e) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|