美文网首页Android技术知识Android知识
android绘图软件导出图片功能的实现

android绘图软件导出图片功能的实现

作者: 修罗的小熊 | 来源:发表于2017-05-27 11:50 被阅读0次

实现思路:

画图时界面总体是一个大的View里面包含了一些其他组件,所以说想要把绘图软件的界面转换成图片导出,只需要将这个最底层的view导出成图片。

实现方法:

1.在项目的逻辑层新建一个ViewToPicture.java类

2.类中实现如下功能:

Bitmap getBitmapFromView(View view)

传入参数想要导出成图片的view,返回获取到的bitmap格式


private Bitmap getBitmapFromView(View view){

     Bitmap bitmap=null;

     try{

        //获取所要的导出的图片的长宽

           int width=view.getWidth();

           int height=view.getHeight();

           if(height&&width){

               //创建view对应的bitmap

               bitmap=Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);

               Canvas canvas=new Canvas(bitmap);

               view.layout(0,0,width,height);

               view.draw(canvas);

          }

       }catch(Exception e){

             e.getStackTrace();

      }

      return bitmap;

}


boolean saveBitmap(Bitmap bitmap, String fileName,Context context)

将生成的bitmap保存到本地相册

public boolean saveBitmap(Bitmap bitmap, String fileName,Context context) {

//获取手机sd card路径

String path = Environment.getExternalStorageDirectory().getPath();

//在sd卡中新建了一个用于存放从Dr.Mind app导出的图片

File file = new File(path+"/Dr.Mind");

//将图片转换为jpg格式存储

fileName=fileName+".jpg";

File[] fileList = file.listFiles();

//查找是否已经存在该张图片,已存在则不再存储

for(int i=0;i<fileList.length;i++){

     if(fileName.equals(fileList[i].getName())){

               return false;

      }

  }

if (!file.exists()) {

     file.mkdir();

}

File imageFile = new File(file, fileName);

try {

    imageFile.createNewFile();

    FileOutputStream fos = new FileOutputStream(imageFile);

  //压缩bimap尺寸

    bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fos);

  //文件流写入文件

    fos.flush();

    fos.close();

   //广播通知系统相册,使得能在相册中查看该文件夹 

    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

    Uri uri = Uri.fromFile(file);

    intent.setData(uri);

    context.sendBroadcast(intent);

   } catch (FileNotFoundException e) {

     e.printStackTrace();

} catch (IOException e) {

    e.printStackTrace();

}

return true;

}


至此已经完成了导出图片的所有功能,只需要使用save方法来调用这两个方法便可完成最终的导出功能

public boolean save(View view, String name,Context context) {

Bitmap bitmap = getBitmapFromView(view);

if(saveBitmap(bitmap, name,context)) return true;

    return false;

}


相关文章

网友评论

    本文标题:android绘图软件导出图片功能的实现

    本文链接:https://www.haomeiwen.com/subject/ctxqfxtx.html