【Android】保存Bitmap到SD卡
16lz
2021-01-23
1.打开读写SD卡的权限
需要在AndroidManifest.xml加入如下代码:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第一种方法:
public void saveBitmap(String bitName, Bitmap mBitmap) {File f = new File("/sdcard/" + bitName + ".png");try {f.createNewFile();} catch (IOException e) {Tools.ToastShort("在保存图片时出错:" + e.toString());}FileOutputStream fOut = null;try {fOut = new FileOutputStream(f);} catch (FileNotFoundException e) {e.printStackTrace();}mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);try {fOut.flush();} catch (IOException e) {e.printStackTrace();}try {fOut.close();} catch (IOException e) {e.printStackTrace();}}
第二种方法:
1、
public boolean writePngFile(File outFile) { // 将在屏幕上绘制的图形保存到SD卡boolean resault = false; // 存储标识,false为保存失败try {FileOutputStream fos = new FileOutputStream(outFile); // 创建文件输出流(写文件)if (editBitmap[0].compress(Bitmap.CompressFormat.PNG, 100, fos)) { // 将图片对象按PNG格式压缩(质量100%),写入文件resault = true; // 存储成功}fos.flush(); // 刷新fos.close();// 关闭流} catch (Exception e) {e.printStackTrace();}return resault;}
2、
public void saveBitmap() {final int fileIndex = getSharedPreferences("bitmapIndex",Context.MODE_PRIVATE).getInt("index", 0); // 从共享偏好的记录中取出文件流水号,首次从0开始new AlertDialog.Builder(this).setTitle("提示信息") // 创建并显示提示对话框.setIcon(android.R.drawable.ic_menu_manage) // 设置图标.setMessage("保存到SD卡: 钧瓷" + fileIndex + ".png?") // 设置提示信息.setPositiveButton("确定", new OnClickListener() { // 按下“确定”按钮的处理public void onClick(DialogInterface dialog,int which) {File outFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+ "钧瓷/钧瓷"+ fileIndex+ ".png");// 在SD卡上新建文件if (MyCanvas.editArea.writePngFile(outFile)) { // 将绘制路径绘制到位图,并压缩保存getSharedPreferences("bitmapIndex",Context.MODE_PRIVATE).edit().putInt("index",(fileIndex + 1) % 5).commit();// 流水号循环递增0~4Tools.ToastShort("保存成功!");isSave = false;if (index == 2) {ScreenNum = 1;MyCanvas.menu.creat();}}}}).setNegativeButton("取消", new OnClickListener() {// 按下“取消”按钮的处理public void onClick(DialogInterface dialog,int which) {isSave = false;if (index == 2) {ScreenNum = 1;MyCanvas.menu.creat();}}}).create().show();}
更多相关文章
- 详细解读Android中的搜索框(四)—— Searchable配置文件
- 安卓开发之实现下角圆形按钮
- Android Studio 指定DEBUG和RELEASE版本打包时的APK文件名
- Android中使用 MediaExtractor 和 MediaMuxer解析、封装 mp4 文
- Android中按钮点击效果显示
- android:shape的使用 (android用xml文件生成图像控件)
- android 自定义View 在布局文件中写法
- Android上传下载文件(图片)
- android 自定义按钮的外边框