首页 > 移动开发 > Bitmap工具类

Bitmap工具类

一直在使用的一个Bitmap工具类

处理Bitmap和ImageView对象,实现了以下功能:

1.saveBitmap: 把Bitmap对象持久存储到SD卡或手机内存.
2.getViewBitmap: 从view得到bitmap对象
3.addWatermark: Bitmap加水印
4.zoomBitmap: 放大缩小图片
5.getLoacalBitmap: 传入路径,从持久存储(SD卡或手机内存)得到Bitmap对象
6.getBitMapByUrl: 通过URL地址获取Bitmap对象

7.toGrayscale: 对Bitmap进行滤镜特效处理.实现了图片变黑白,变亮,变暗,高对比,低对比,高饱和,低饱和

下载地址:http://download.csdn.net/download/landehuxi/6661713

源码如下:

  1. public class ImgService {  
  2.     //亮  
  3.     public  final float[] LIGHT_ARR = new float[] {   
  4.             1000100,   
  5.             0100100,   
  6.             0010100,  
  7.             00010 };  
  8.     //暗  
  9.     public  final float[] DARK_ARR = new float[] {   
  10.             0.2f, 00050.8f,   
  11.             00.2f, 0050.8f,   
  12.             00,0.2f, 050.8f,   
  13.             000, 1f, 0 };  
  14.     //高对比  
  15.     public  final float[] GDB_ARR = new float[] {   
  16.                 5000, -250,   
  17.                 0500, -250,   
  18.                 0050, -250,  
  19.                 00010 };  
  20.     //高对比  
  21.     public  final float[] DDB_ARR = new float[] {   
  22.                 0.2f, 00050,   
  23.                 00.2f, 0050,   
  24.                 000.2f, 050,  
  25.                 00010 };  
  26.     //高饱和  
  27.     public  final float[] GBH_ARR = new float[] {   
  28.                 3f, -1.8f, -0.25f, 050,   
  29.                 -0.9f, 2.1f, -0.25f, 050,   
  30.                 -0.9f, -1.8f, 3.8f, 050,  
  31.                 00010 };  
  32.     //低饱和  
  33.     public final float[] DBH_ARR = new float[] {   
  34.             0.3f, 0.6f, 0.08f, 00,   
  35.             0.3f, 0.6f, 0.08f, 00,   
  36.             0.3f, 0.6f, 0.08f, 00,  
  37.             00010 };  
  38.     //COPY  
  39.     public final float[] COPY_ARR = new float[] {   
  40.                 00000,   
  41.                 00000,   
  42.                 00000,  
  43.                 00000 };  
  44.     /** 
  45.      * 为图片加滤镜特效.array参数为ImgService定义的几个滤镜矩阵.如ImgService.LIGHT_ARR 
  46.      * @param bmpOriginal 
  47.      * @param array 
  48.      * @return 
  49.      */  
  50.     public Bitmap toGrayscale(Bitmap bmpOriginal, float[] array) {  
  51.         int width, height;  
  52.         height = bmpOriginal.getHeight();  
  53.         width = bmpOriginal.getWidth();  
  54.   
  55.         Bitmap bmpGrayscale = Bitmap.createBitmap(width, height,  
  56.                 Bitmap.Config.RGB_565);  
  57.         Canvas c = new Canvas(bmpGrayscale);  
  58.         Paint paint = new Paint();  
  59.         ColorMatrix colorMatrix = new ColorMatrix();  
  60.         colorMatrix.set(array);  
  61.         paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));  
  62.         c.drawBitmap(bmpOriginal, 00, paint);  
  63.         bmpOriginal.recycle();  
  64.         bmpOriginal=null;  
  65.         return bmpGrayscale;  
  66.     }  
  67.   
  68.     public boolean saveBitmap(Bitmap bitmap, String fileName, String path) {  
  69.         File file = new File(path);  
  70.         FileOutputStream fos=null;  
  71.         if (!file.exists()) {  
  72.             file.mkdir();  
  73.         }  
  74.         File imageFile = new File(file, fileName);  
  75.         try {  
  76.             imageFile.createNewFile();  
  77.             fos = new FileOutputStream(imageFile);  
  78.             bitmap.compress(CompressFormat.JPEG, 50, fos);  
  79.             fos.flush();  
  80.         } catch (FileNotFoundException e) {  
  81.             e.printStackTrace();  
  82.         } catch (IOException e) {  
  83.             e.printStackTrace();  
  84.         }finally{  
  85.             if(fos!=null){  
  86.                 try {  
  87.                     fos.close();  
  88.                 } catch (IOException e) {  
  89.                     e.printStackTrace();  
  90.                 }  
  91.                 fos=null;  
  92.             }  
  93.         }  
  94.         return true;  
  95.     }  
  96.   
  97.     // 从view得到bitmap  
  98.     public Bitmap getViewBitmap(View view) {  
  99.         Bitmap bitmap = null;  
  100.         try {  
  101.             int width = view.getWidth();  
  102.             int height = view.getHeight();  
  103.             if (width != 0 && height != 0) {  
  104.                 bitmap = Bitmap.createBitmap(width, height,  
  105.                         Bitmap.Config.ARGB_8888);  
  106.                 Canvas canvas = new Canvas(bitmap);  
  107.                 view.draw(canvas);  
  108.             }  
  109.         } catch (Exception e) {  
  110.             bitmap = null;  
  111.             Debug.out(e);  
  112.         }  
  113.         return bitmap;  
  114.     }  
  115.   
  116.     // Bitmap加水印  
  117.     public Bitmap addWatermark(Bitmap src, Bitmap watermark) {  
  118.         if (src == null || watermark == null) {  
  119.             return src;  
  120.         }  
  121.   
  122.         int sWid = src.getWidth();  
  123.         int sHei = src.getHeight();  
  124.         int wWid = watermark.getWidth();  
  125.         int wHei = watermark.getHeight();  
  126.         if (sWid == 0 || sHei == 0) {  
  127.             return null;  
  128.         }  
  129.   
  130.         if (sWid < wWid || sHei < wHei) {  
  131.             return src;  
  132.         }  
  133.   
  134.         Bitmap bitmap = Bitmap.createBitmap(sWid, sHei, Config.ARGB_8888);//Config可修改,改变内存占用  
  135.         try {  
  136.             Canvas cv = new Canvas(bitmap);  
  137.             cv.drawBitmap(src, 00null);  
  138.             cv.drawBitmap(watermark, sWid - wWid - 5, sHei - wHei - 5null);  
  139.             cv.save(Canvas.ALL_SAVE_FLAG);  
  140.             cv.restore();  
  141.         } catch (Exception e) {  
  142.             bitmap = null;  
  143.             e.getStackTrace();  
  144.         }finally{  
  145.             src.recycle();  
  146.             src=null;  
  147.             watermark.recycle();  
  148.             watermark=null;  
  149.         }  
  150.         return bitmap;  
  151.     }  
  152.     /** 
  153.      * 放大缩小图片 
  154.      *  
  155.      * @Title: zoomBitmap 
  156.      * @param @param bitmap 
  157.      * @param @param w 
  158.      * @param @param h 
  159.      * @return Bitmap 
  160.      * @throws 
  161.      */  
  162.     public  Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {  
  163.         int width = bitmap.getWidth();  
  164.         int height = bitmap.getHeight();  
  165.         Matrix matrix = new Matrix();  
  166.         float scaleWidht = ((float) w / width);  
  167.         float scaleHeight = ((float) h / height);  
  168.         matrix.postScale(scaleWidht, scaleHeight);  
  169.         Bitmap newbmp = Bitmap.createBitmap(bitmap, 00, width, height, matrix, true);  
  170.         bitmap.recycle();  
  171.         bitmap=null;  
  172.         return newbmp;  
  173.     }  
  174.     /** 
  175.      * @Title: getLoacalBitmap 
  176.      * @Description: 加载本地图片 
  177.      * @param @param url 本地路径 
  178.      * @param @return 
  179.      * @return Bitmap 
  180.      * @throws 
  181.      */  
  182.     public  Bitmap getLoacalBitmap(String url) {  
  183.         if (url != null) {  
  184.             FileInputStream fis=null;  
  185.             try {  
  186.                 fis = new FileInputStream(url);  
  187.                 return BitmapFactory.decodeStream(fis); // /把流转化为Bitmap图片  
  188.             } catch (FileNotFoundException e) {  
  189.                 e.printStackTrace();  
  190.                 return null;  
  191.             }finally{  
  192.                 StreamService.close(fis);  
  193.                 if(fis!=null){  
  194.                     try {  
  195.                         fis.close();  
  196.                     } catch (IOException e) {  
  197.                         e.printStackTrace();  
  198.                     }  
  199.                     fis=null;  
  200.                 }  
  201.             }  
  202.         } else {  
  203.             return null;  
  204.         }  
  205.     }  
  206.   
  207.     /** 
  208.      * 通过URL地址获取Bitmap对象 
  209.      *  
  210.      * @Title: getBitMapByUrl 
  211.      * @param @param url 
  212.      * @param @return 
  213.      * @param @throws Exception 
  214.      * @return Bitmap 
  215.      * @throws 
  216.      */  
  217.     public  Bitmap getBitMapByUrl(final String url) {  
  218.         URL fileUrl = null;  
  219.         InputStream is=null;  
  220.         Bitmap bitmap = null;  
  221.         try {  
  222.             fileUrl = new URL(url);  
  223.             HttpURLConnection conn = (HttpURLConnection) fileUrl.openConnection();  
  224.             conn.setDoInput(true);  
  225.             conn.connect();  
  226.             is = conn.getInputStream();  
  227.             bitmap = BitmapFactory.decodeStream(is);  
  228.         } catch (Exception e) {  
  229.             e.printStackTrace();  
  230.         }finally{  
  231.             try {  
  232.                 if (null!=is) {  
  233.                     is.close();  
  234.                 }  
  235.             } catch (IOException e) {  
  236.                 e.printStackTrace();  
  237.             }  
  238.             is=null;  
  239.         }  
  240.         return bitmap;  
  241.     }  
  242.       
  243. }  

本文固定链接: http://www.devba.com/index.php/archives/5643.html | 开发吧

报歉!评论已关闭.