直接上关键代码:
ScreenShotUtils 工具类代码:

import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Rect;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;import android.util.Log;import android.view.View;/** * @Description: 进行截屏工具类 * @author wjj * @time 2013/09/29 */public class ScreenShotUtils {   private  static  Context context;    /**     * 进行截取屏幕     * @param pActivity     * @return bitmap     */    public static String takeScreenShot(Activity pActivity)    {        context = pActivity;        Bitmap bitmap=null;        View view=pActivity.getWindow().getDecorView();        // 设置是否可以进行绘图缓存        view.setDrawingCacheEnabled(true);        // 如果绘图缓存无法,强制构建绘图缓存        view.buildDrawingCache();        // 返回这个缓存视图        bitmap=view.getDrawingCache();        // 获取状态栏高度        Rect frame=new Rect();        // 测量屏幕宽和高        view.getWindowVisibleDisplayFrame(frame);        int stautsHeight = 100;        Log.d("jiangqq", "状态栏的高度为:"+stautsHeight);        int width = pActivity.getWindowManager().getDefaultDisplay().getWidth();        int height = (int)width*7/5;         //截图时控制距离,距离屏幕底部多高距离        bitmap = Bitmap.createBitmap(bitmap, 0, stautsHeight, width, height);        Log.d("截图截图截图截图", "截图width:"+width+"截图height:"+height+"顶部开始Y坐标"+stautsHeight);        String path = SaveSdCardUtil.saveMyBitmap(System.currentTimeMillis() + ".jpg",bitmap);        return path;    }    //好用的保存    public static String getSavePath(Bitmap bitmap)    {        String path = SaveSdCardUtil.saveMyBitmap(System.currentTimeMillis() + ".jpg",bitmap);        return path;    }    /** 首先默认个文件保存路径 */    private static final String SAVE_PIC_PATH=Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//保存到SD卡    private static final String SAVE_REAL_PATH = SAVE_PIC_PATH+ "/good/savePic";//保存的确切位置    public static void saveFile(Bitmap bm, String fileName, String path) throws IOException {        String fileName1 =  System.currentTimeMillis() + ".jpg";        String subForder = SAVE_REAL_PATH + fileName1;        File foder = new File(subForder);        if (!foder.exists()) {            foder.mkdirs();        }        File myCaptureFile = new File(subForder, fileName);        if (!myCaptureFile.exists()) {            myCaptureFile.createNewFile();        }        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));        bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);        bos.flush();        bos.close();    }    public static String createImageFromBitmap(Bitmap bitmap) {        String fileName = System.currentTimeMillis() + ".jpg";        Uri uri;        try {            String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator +fileName;            File appDir = new File(storePath);            if (!appDir.exists()) {                appDir.mkdir();            }            File file = new File(appDir, fileName);            FileOutputStream fos = new FileOutputStream(file);            //通过io流的方式来压缩保存图片            boolean isSuccess = bitmap.compress(Bitmap.CompressFormat.JPEG, 60, fos);            fos.flush();            fos.close();            //把文件插入到系统图库            MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);        } catch (Exception e) {            e.printStackTrace();            fileName = null;        }        Log.i("fileName", fileName);        return fileName.toString();    }    /**     * 保存图片到sdcard中     * @param pBitmap     */    public static boolean savePic(Bitmap pBitmap,String strName)    {        String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator +strName;        File appDir = new File(storePath);        if (!appDir.exists()) {            appDir.mkdir();        }        FileOutputStream fos=null;        try {            fos=new FileOutputStream(strName);            if(null!=fos)            {                pBitmap.compress(Bitmap.CompressFormat.JPEG, 60, fos);                fos.flush();                fos.close();                return true;            }        } catch (FileNotFoundException e) {            e.printStackTrace();        }catch (IOException e) {            e.printStackTrace();        }        return false;    }    //保存文件到指定路径    public static boolean saveImageToGallery(Context context, Bitmap bmp) {        // 首先保存图片        String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + System.currentTimeMillis()+".jpg";        File appDir = new File(storePath);        if (!appDir.exists()) {            appDir.mkdir();        }        String fileName = System.currentTimeMillis() + ".jpg";        File file = new File(appDir, fileName);        try {            FileOutputStream fos = new FileOutputStream(file);            //通过io流的方式来压缩保存图片            boolean isSuccess = bmp.compress(Bitmap.CompressFormat.JPEG, 60, fos);            fos.flush();            fos.close();            //把文件插入到系统图库            MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);            //保存图片后发送广播通知更新数据库            Uri uri = Uri.fromFile(file);//            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));            if (isSuccess) {                return true;            } else {                return false;            }        } catch (IOException e) {            e.printStackTrace();        }        return false;    }    /**     * 获取一个 View 的缓存视图     */    public static Bitmap getCacheBitmapFromView(View v) {        //第一种方案   返回的bitmap不为空        if (v.getLayoutParams().width<=0||v.getLayoutParams().height<=0){            return null;        }        Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_4444);        Canvas c = new   Canvas(b);        v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());        v.draw(c);        return b;    }}

存储为jpg或者png图片辅助工具类:

import android.graphics.Bitmap;import android.util.Log;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * Created by wjj on 2017/9/28. * @Description  图片存储工具类 */public class SaveSdCardUtil {    public static String saveMyBitmap(String bitName, Bitmap mBitmap){        String filePath = "";        File f = new File("/sdcard/" + bitName );        filePath = f.getAbsolutePath();        try {            f.createNewFile();        } catch (IOException e) {            Log.e("在保存图片时出错","在保存图片时出错"+e.toString());        }        FileOutputStream fOut = null;        try {            fOut = new FileOutputStream(f);        } catch (FileNotFoundException e) {            e.printStackTrace();        }        mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);        try {            fOut.flush();        } catch (IOException e) {            e.printStackTrace();        }        try {            fOut.close();        } catch (IOException e) {            e.printStackTrace();        }        return filePath;    }    public static String saveMyBitmapPng(String bitName, Bitmap mBitmap){        String filePath = "";        File f = new File("/sdcard/" + bitName );        filePath = f.getAbsolutePath();        try {            f.createNewFile();        } catch (IOException e) {            Log.e("在保存图片时出错","在保存图片时出错"+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();        }        return filePath;    }}

更多相关文章

  1. Android平台上实现图片的缩放,圆角,倒影效果
  2. android读取图片
  3. Android 使用Glide实现圆形和圆角图片
  4. 2012-7-20 android 图片叠加效果——两种方法
  5. android 实现视频缓存
  6. Android文件图片上传的详细讲解(四)---服务端编码
  7. android处理大图片内存溢出的简单办法

随机推荐

  1. 关于 android:layout_x 和 android:layou
  2. Android常用控件TextView的属性详解
  3. Android 的消息队列模型
  4. 【Android】“android:gravity”和“andr
  5. android 结合 opencv项目(NDK、OpenCV、an
  6. Android消息机制和应用
  7. Android 面试必备 - JVM 及 类加载机制
  8. Android 5.0 API新增和改进
  9. Android Property System | Android属性
  10. Android腾讯微薄客户端开发教程汇总