马上吃饭了,懒得写太多了,先对付看吧

/*** Author : 马占柱* E-mail : mazhanzhu_3351@163.com* Time   : 2019/5/19 9:30* Desc   : Base64工具类*/
public class Base64Util {public static final String TAG = "Base64Util";private static final char last2byte = (char) Integer.parseInt("00000011", 2);private static final char last4byte = (char) Integer.parseInt("00001111", 2);private static final char last6byte = (char) Integer.parseInt("00111111", 2);private static final char lead6byte = (char) Integer.parseInt("11111100", 2);private static final char lead4byte = (char) Integer.parseInt("11110000", 2);private static final char lead2byte = (char) Integer.parseInt("11000000", 2);private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};//取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据public static String Mzz_File = BaseApplication.getContext().getExternalCacheDir().getAbsolutePath();public static void gcBitmap(Bitmap bitmap) {if (bitmap != null && !bitmap.isRecycled()) {bitmap.recycle(); // 回收图片所占的内存bitmap = null;System.gc(); // 提醒系统及时回收}}/*** Bitmap To Base64*/public static String bitmapToBase64(Bitmap bitmap) {// 要返回的字符串String reslut = null;ByteArrayOutputStream baos = null;try {if (bitmap != null) {baos = new ByteArrayOutputStream();//压缩只对保存有效果bitmap还是原来的大小bitmap.compress(Bitmap.CompressFormat.JPEG, 30, baos);baos.flush();baos.close();// 转换为字节数组byte[] byteArray = baos.toByteArray();// 转换为字符串reslut = Base64.encodeToString(byteArray, Base64.NO_WRAP);} else {return null;}} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}return reslut;}/*** Bitmap To Bitmap*/public static Bitmap base64ToBitmap(String base64String) {byte[] decode = Base64.decode(base64String, Base64.DEFAULT);Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);return bitmap;}/*** Bitmap 转化为 二维数组*/public static byte[] getBytesByBitmap(Bitmap bitmap) {try {ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bitmap.getByteCount());bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);return outputStream.toByteArray();} catch (Exception e) {return new byte[10];}}/*** 文件 转 base64字符串*/public static String fileToBase64(File file) {String base64 = null;try {InputStream in = new FileInputStream(file);byte[] bytes = new byte[in.available()];int length = in.read(bytes);base64 = Base64.encodeToString(bytes, 0, length, Base64.DEFAULT);in.close();} catch (Exception e) {}return base64;}/*** Bitmap 转 文件*/public static File bitmapToFile(Bitmap bitmap) {ByteArrayOutputStream baos = new ByteArrayOutputStream();//第二个参数是压缩比重,图片存储在磁盘上的大小会根据这个值变化。值越小存储在磁盘的图片文件越小,bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);File fileDir = new File(Base64Util.Mzz_File);if (!fileDir.exists()) {fileDir.mkdirs();}File file = new File(Mzz_File, System.currentTimeMillis() + "压缩图片_Mzz.jpg");try {FileOutputStream fos = new FileOutputStream(file);InputStream is = new ByteArrayInputStream(baos.toByteArray());int x = 0;byte[] b = new byte[1024 * 100];while ((x = is.read(b)) != -1) {fos.write(b, 0, x);}fos.close();} catch (Exception e) {Log_Ma.e(TAG, e.toString());e.printStackTrace();}return file;}public static String encode(byte[] from) {StringBuilder to = new StringBuilder((int) ((double) from.length * 1.34D) + 3);int num = 0;char currentByte = 0;int i;for (i = 0; i < from.length; ++i) {for (num %= 8; num < 8; num += 6) {switch (num) {case 0:currentByte = (char) (from[i] & lead6byte);currentByte = (char) (currentByte >>> 2);case 1:case 3:case 5:default:break;case 2:currentByte = (char) (from[i] & last6byte);break;case 4:currentByte = (char) (from[i] & last4byte);currentByte = (char) (currentByte << 2);if (i + 1 < from.length) {currentByte = (char) (currentByte | (from[i + 1] & lead2byte) >>> 6);}break;case 6:currentByte = (char) (from[i] & last2byte);currentByte = (char) (currentByte << 4);if (i + 1 < from.length) {currentByte = (char) (currentByte | (from[i + 1] & lead4byte) >>> 4);}}to.append(encodeTable[currentByte]);}}if (to.length() % 4 != 0) {for (i = 4 - to.length() % 4; i > 0; --i) {to.append("=");}}return to.toString();}/*** @param key      加密秘钥* @param filepath 源文件地址*/public static Map<String, String> IMG_Jiami(int key, String filepath) {File fileDir = new File(Base64Util.Mzz_File);if (!fileDir.exists()) {fileDir.mkdirs();}File file = new File(fileDir, System.currentTimeMillis() + "_Mzz.jpg");String path_jiami;long available = 0;try {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filepath));available = bis.available();BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getPath()));int b;while ((b = bis.read()) != -1) {bos.write(b ^ key);}path_jiami = file.getPath();bis.close();bos.close();} catch (Exception e) {path_jiami = filepath;}Map<String, String> map = new HashMap<>();map.put("path", path_jiami);map.put("size", available + "");return map;}/*** 获取视频封面*/public static Bitmap getVideoThumb(String path) {MediaMetadataRetriever media = new MediaMetadataRetriever();media.setDataSource(path);return media.getFrameAtTime();}/*** 获取视频时长*/public static long getLocalVideoDuration(String videoPath) {int duration;try {MediaMetadataRetriever mmr = new MediaMetadataRetriever();mmr.setDataSource(videoPath);duration = Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));} catch (Exception e) {e.printStackTrace();return 0;}return duration;}/*** @return view的截图,在InVisible时也可以获取到bitmap*/public static Bitmap getViewBitmap(View view) {view.measure(View.MeasureSpec.makeMeasureSpec(view.getMeasuredWidth(), View.MeasureSpec.EXACTLY),View.MeasureSpec.makeMeasureSpec(view.getMeasuredHeight(), View.MeasureSpec.EXACTLY));view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);view.setDrawingCacheEnabled(true);view.buildDrawingCache(true);return view.getDrawingCache(true);}/*** 获取系统相册文件路径*/public static File getDCIMDirectory() {File dcim = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);if (!dcim.exists()) {dcim = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);}return dcim;}/*** 根据绝对路径得到图片的宽高,亲测比楼上速度快几十倍** @param path 绝对路径!绝对路径!绝对路径!* @return 宽高*/public static int[] getImageWidthHeight(String path) {try {BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(path, options);return new int[]{options.outWidth, options.outHeight};} catch (Exception e) {e.printStackTrace();}return new int[]{0, 0};}/*** 根据相对路径获取图片宽高** @param c   上下文* @param uri 图片uri地址* @return 宽高信息*/public static int[] getImageWidthHeight(Context c, Uri uri) {try {ParcelFileDescriptor parcelFileDescriptor = c.getContentResolver().openFileDescriptor(uri, "r");if (parcelFileDescriptor != null) {FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);parcelFileDescriptor.close();return new int[]{image.getWidth(), image.getHeight()};}} catch (Exception e) {e.printStackTrace();}return new int[]{0, 0};}
}

Base64工具类(文件、base64字符串、Bitmap相互转换)相关推荐

  1. Base64工具类Base64Util

    需要的依赖包 <dependency><groupId>commons-net</groupId><artifactId>commons-net< ...

  2. MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.Byt ...

  3. [工具类]文件或文件夹xx已存在,则重命名为xx(n)(2)

    写在前面 最近一直在弄文件传输组件,其中一个功能就是,在接收端接收文件时,如果文件已经存在了,则对其进行文件名+索引的方式进行自动重命名,之前也写个类似的工具类,总感觉代码太冗余,每回头想想,总觉得心 ...

  4. Python正则表达式工具类文件的封装实例,提供了多个实例,并且在代码中包含中文注释

    Python正则表达式工具类文件的封装实例,提供了多个实例,并且在代码中包含中文注释 import reclass RegexUtils:'''正则表达式工具类'''def __init__(self ...

  5. spring字符串判空_字符串工具类StringUtils实现字符串是否中文、字符串分割/判空/替换/查找、是否包含乱码及字符串数组合并等常规操作...

    一.前言 关于字符串工具类StringUtils实现字符串是否包含isChinese中文.是否包含isMessyCode乱码.常规数据类型转换.替换/删除/判空.两字符串数组mergeStringAr ...

  6. Jva编解码,加密工具类大全(Base64编解码,URL 编解码,sha56_Hmac加密,MD5对字符串进行加密,java自带类实现SHA-256方式加密)

    Base64编解码 /*** Base64编码.*/public static String encodeBase64(byte[] input) {return new String(Base64. ...

  7. Base64工具类及2点问题

    序 最近公司做通行管理这块,设备要求图片传base64字符串,就分享下这个工具类,以及里面的一些问题吧,直接上码. package com.xiaotian.bus.util; import lomb ...

  8. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

    一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...

  9. JAVA 图片地址路径转换 Base64 工具类

    工具类代码: import sun.misc.BASE64Encoder; import java.io.ByteArrayOutputStream; import java.io.FileInput ...

最新文章

  1. 串口 发送 接收 高位_电工进阶PLC大神,必备PLC串口通讯的基本知识!
  2. sysbench0.5 mysql_sysbench 0.5 安装及 MySQL 基准测试
  3. dell台式机进入安全模式_华为发布首款商用台式机,商用PC市场再掀变革?
  4. 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
  5. 在 CentOS 7 中安装 Docker
  6. USTC English Club Note20171013(2)
  7. 思科服务器型号m1414,Cisco UCS M 系列模块化服务器
  8. python测试脚本截图_Python+selenium实现截图图片并保存截取的图片
  9. STM32基础分析——USART的DMA模式
  10. 南邮 | 算法分析与设计实验三:回溯法
  11. 【原创】基于FPGA的SDRAM控制器设计—自动刷新设计
  12. FC网络光纤通信 c语言实现,[2018年最新整理]光纤通信实验指导书(含原理).doc
  13. 高数 | 函数可导和函数连续可导
  14. git clone失败:Cloning into... fatal: unable to access... error setting certificate verify locations
  15. 一口气讲完设计模式(单例模式、工厂模式、原型模式、建造者模式、适配器、桥梁模式)
  16. #include<set>头文件的用法
  17. 计算机软件标杆企业,张军平老师—人工智能专家,复旦大学教授,博士生导师,中国计算机协会人工智能专委会委员,软件学报和自动化学报责任编辑...
  18. RecyclerView 梳理:点击amp;长按事件、分割线、拖曳排序、滑动删除
  19. 智能客服的解决方案以及相较于传统客服的技术优势
  20. (填坑)tarjan

热门文章

  1. js 数字和字符串相互转换
  2. cygwin上编译c语言,Cygwin编译c程序步骤
  3. Ubuntu系统查看内存信息
  4. 别什么都晒到朋友圈!哈哈哈哈哈哈哈哈哈哈哈哈
  5. 计算机网络--应用层Web简单介绍
  6. 【vue】Element UI实现表格表头纵向显示
  7. Python实现壁纸浏览与设置
  8. Redis:哨兵集群
  9. TensorFlow-gpu2.0.0 + Anaconda + Win10(MX250)安装教程
  10. asvscode生成key及打包android