获取view图片并保存bitmap到本地
2020/02/03 来源:乐潮信息
获取view图片并保存bitmap到本地
在日常开发中,我们有时候会遇到将获取app页面上的图片。这个时候我们就可以通过获取某个view的布局,然后将其转换成一张图片。话不多说,看代码。
/**
* view转bitmap
*/
public Bitmap viewConversionBitmap(View v)
{
int w = v.getWidth();
int h = v.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.drawColor(Color.WHITE);
/** 如果不设置canvas画布为白色,则生成透明 */
v.layout(0, 0, w, h);
v.draw(c);
return bmp;
}
//保存bitmap到本地
public int saveImageToGallery(Bitmap bmp)
{
//生成路径
String targetPath = Environment.getExternalStorageDirectory() + File.separator + AppUtils.getAppName() + "/分享" + new Date().getTime() + ".jpg";
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
String dirName = "" + AppUtils.getAppName();
File appDir = new File(root, dirName);
if(!appDir.exists())
{
appDir.mkdirs();
}
//文件名为时间
long timeStamp = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sd = sdf.format(new Date(timeStamp));
String fileName = sd + ".png";
//获取文件
File file = new File(appDir, fileName);
FileOutputStream fos = null;
try
{
fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
LecoUtils.Log("保存成功 file=" + file.getPath());
//通知系统相册刷新
getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(file.getPath()))));
return 2;
}
catch(FileNotFoundException e)
{
LecoUtils.Log("保存异常1 e=" + e);
e.printStackTrace();
}
catch(IOException e)
{
LecoUtils.Log("保存异常2 e=" + e);
e.printStackTrace();
}
finally
{
LecoUtils.Log("保存 finally");
try
{
if(fos != null)
{
fos.close();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
return -1;
}
我们可以根据某一个view来将其生成一张图片,进行分享、上传或者保存到本地的一系列操作。