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;
}
}
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(2) : 有关Bitmap的操作
- [Android]通过JNI访问并操作Bitmap的元素,支持RGB565和ARGB8888
- Android平台Camera实时滤镜实现方法探讨(一)--JNI操作Bitmap
- android操作Bitmap的一个小问题
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android 图片操作(Bitmap)
- Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移
- 一些有关Android图片的操作,判断方向,旋转,根据uri获取绝对路径,缩放与移动
- Android Bitmap操作内存问题总结(图片处理、截屏等)
- Android图片操作(Bitmap)
- Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas
- Android - Bitmap操作汇总
- Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移
- Android Studio——Android Bitmap开发之旅--基本操作
- android list 保存点进行有关操作
- Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- android系列:Bitmap的一些操作
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作等。
- Android面试题(26)-有关SharePreference的多进程