您的位置:首页 > 职场人生

Android面试题(24)-有关bitmap的操作

2018-03-06 23:39 369 查看
有关bitmap的操作一直很多,这里特此总结一下:
public class BitmapTransformUtils {

//根据图片uri生成Bitmap对象
public static Bitmap getBitmapByUrl(Context context, Uri uri) {
if (uri == null)
return null;
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
return bitmap;
}

//bitmap 转base64
public static String getBase64ByBitmap(Bitmap bitmap) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT);
}

//base64转成bitmap
public static Bitmap getBitmapByBase64(String string) {
Bitmap bitmap = null;
try {
byte[] bitmapArray;
bitmapArray = Base64.decode(string, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

//根据本地图片路径String转base64
public static String getFileBase64String(String path) {
File file = new File(path);
try {
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int i = in.read();
while (i != -1) {
out.write(i);
i = in.read();
}
return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

//加载本地图片
public static Bitmap getLoacalBitmap(String url) {
try {
FileInputStream fis = new FileInputStream(url);
return BitmapFactory.decodeStream(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}

//将Bitmap保存在本地
public static void saveBitmap(Context context, Bitmap bitmap) {
//首先保存bitmap
File file=new File(Environment.getExternalStorageDirectory(),"bitmap" );
if (!file.exists()){
file.mkdir();
}
String filename="bitmap"+".png";
File file1=new File(file,filename);
try {
FileOutputStream out=new FileOutputStream(file1);
bitmap.compress(Bitmap.CompressFormat.PNG,100,out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}

//把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),file1.getAbsolutePath(),filename,null);

} catch (FileNotFoundException e) {
e.printStackTrace();
}

// 通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + "/sdcard/namecard/")));
}

//bitmap转换成byte数组
/**
* bitmap转换成byte数组
*
* @param bitmap
* @param needRecycle
* @return
*/
public static byte[] bitmapToByteArray(Bitmap bitmap, boolean needRecycle) {
if (null == bitmap) {
return null;
}
if (bitmap.isRecycled()) {
return null;
}

ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
if (needRecycle) {
bitmap.recycle();
}

byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 面试题 bitmap
相关文章推荐