原理 将view利用canvas画到bitmap 上,然后对bitmap进行后续的操作可以保存为png或者jpeg,我想要进行灰度处理但是没有去实现。
package com.garea.plugin.report.detail.print;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Environment;
import android.view.View;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Created by yuankaifeng on 7/7/16.
*/
@SuppressLint("NewApi") public class BitmapUtils {
private static Bitmap view2Bitmap(View view, int bitmapWidth, int bitmapHeight){
Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.RGB_565);//Bitmap.Config.ARGB_8888
view.draw(new Canvas(bitmap));
return bitmap;
}
private static String writeBitmapToSDcard(String path ,String fileName ,Bitmap bitmap,int compress){
// String strPath ="/testSaveView/"+ UUID.randomUUID().toString()+".png";
String strPath = path+"/"+fileName;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File sdCardDir=Environment.getExternalStorageDirectory();
FileOutputStream fos = null;
try{
File file = new File(sdCardDir,strPath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
fos = new FileOutputStream(file);
//当指定压缩格式为PNG时保存下来的图片显示正常
bitmap.compress(Bitmap.CompressFormat.PNG, compress, fos);
//当指定压缩格式为JPEG时保存下来的图片背景为黑色
//bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
bitmap.recycle();//释放掉bitmap
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return strPath;
}
return null;
}
public static String view2PNG( View view,String path ,String fileName ,int compress){
Bitmap bitmap = view2Bitmap(view,view.getMeasuredWidth(),view.getMeasuredHeight());
if(bitmap == null){
return null;
}
return writeBitmapToSDcard(path,fileName,bitmap,compress);
}
}
——————————————————————————————————————————————
上面是工具类
使用很简单
String filePath = BitmapUtils.view2PNG(view, "/aaa", "view.png", 100); 给他传入你想要传化为图片的View 和路径
就可以到对应的路径下面去看图片是否存在了