博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记进阶18之画图并保存图片到本地
阅读量:4035 次
发布时间:2019-05-24

本文共 2767 字,大约阅读时间需要 9 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1、首先创建一个Bitmap图片,并指定大小;

 
2、在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可;
 
3、需要保存的目录File,注意如果写的目录如“/sdcard/song/”如果不存在的话,要先创建(file.mkdirs).。

4、需要添加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Canvas是一个画布,你可以建立一个空白的画布,就直接new一个Canvas对象,不需要参数。也可以先使用BitmapFactory创建一个Bitmap对象,作为新的Canvas对象的参数,也就是说这个画布不是空白的,如果你想保存图片的话,最好是Bitmap是一个新的,而不是从某个文件中读入进来的,或者是Drawable对象。然后使用Canvas画第一张图上去,在画第二张图上去,最后使用Canvas.save(int flag)的方法进行保存,注意save方法里面的参数可以保存单个图层,如果是保存全部图层的 话使用 save( Canvas.ALL_SAVE_FLAG )。

 

关于图片旋转问题不懂的话,请看博文:

                                这是原图片和旋转后图片

 

                                                                     这是保存到本地的图片800*600 JPG格式

 

具体实现:

package xiaosi.bitmap;import android.app.Activity;import android.os.Bundle;public class mianActivity extends Activity{ private BitmapView bitmapView = null; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  bitmapView = new BitmapView(this);  setContentView(bitmapView); }}

BitmapView.java

package xiaosi.bitmap;import java.io.File;import java.io.FileOutputStream;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.view.View;public class BitmapView extends View{ private Matrix matrix = null; public BitmapView(Context context) {  super(context); } public void onDraw(Canvas canvas) {    // 获取资源文件的引用res  Resources res = getResources();   // 获取图形资源文件  Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);  // 设置canvas画布背景为白色  canvas.drawColor(Color.BLACK);  canvas.drawBitmap(bmp, 0, 0, null);  // 定义矩阵对象  matrix = new Matrix();  //旋转30度  matrix.postRotate(30);  Bitmap bitmap = Bitmap.createBitmap(bmp, 0, 50, bmp.getWidth(), bmp.getHeight()/2,    matrix, true);  canvas.drawBitmap(bitmap, 0, 250, null);  SaveBitmap(bitmap); } //保存到本地 public void SaveBitmap(Bitmap bmp) {  Bitmap bitmap = Bitmap.createBitmap(800, 600, Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);  //加载背景图片  Bitmap bmps = BitmapFactory.decodeResource(getResources(), R.drawable.playerbackground);  canvas.drawBitmap(bmps, 0, 0, null);  //加载要保存的画面  canvas.drawBitmap(bmp, 10, 100, null);  //保存全部图层  canvas.save(Canvas.ALL_SAVE_FLAG);  canvas.restore();  //存储路径  File file = new File("/sdcard/song/");  if(!file.exists())   file.mkdirs();   try {    FileOutputStream fileOutputStream = new FileOutputStream(file.getPath() + "/xuanzhuan.jpg");    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);    fileOutputStream.close();    System.out.println("saveBmp is here");   } catch (Exception e) {      e.printStackTrace();  } }}

 

 

源代码下载:

 

 

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
CImg库编译使用.
查看>>
openstack虚拟机创建流程
查看>>
openstack网络总结
查看>>
excel 查找一个表的数据在另一个表中是否存在
查看>>
centos 7 上配置dnsmasq 同时支持ipv4和ipv6的DHCP服务
查看>>
AsyncTask、View.post(Runnable)、ViewTreeObserver三种方式总结frame animation自动启动
查看>>
Android中AsyncTask的简单用法
查看>>
S3C6410启动模式介绍
查看>>
2440初始化存储器原理(接上一篇)
查看>>
S3C2440 USB 设备控制器(转)
查看>>
Linux usb 设备驱动 (1)
查看>>
解决跨网场景下,CAS重定向无法登录的问题(无需修改现有代码)
查看>>
java反编译命令
查看>>
activemq依赖包获取
查看>>
概念区别
查看>>
关于静态块、静态属性、构造块、构造方法的执行顺序
查看>>
final 的作用
查看>>
在Idea中使用Eclipse编译器
查看>>
idea讲web项目部署到tomcat,热部署
查看>>
优化IDEA启动速度,快了好多。后面有什么优化点,会继续往里面添加
查看>>