image

来源:互联网 发布:网络攻防技术吴灏 下载 编辑:程序博客网 时间:2024/04/29 19:40
  1. public class ImageUtil {  
  2.   
  3.     public static InputStream getRequest(String path) throws Exception {  
  4.         URL url = new URL(path);  
  5.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  6.         conn.setRequestMethod("GET");  
  7.         conn.setConnectTimeout(5000);  
  8.         if (conn.getResponseCode() == 200){  
  9.             return conn.getInputStream();  
  10.         }  
  11.         return null;  
  12.     }  
  13.   
  14.     public static byte[] readInputStream(InputStream inStream) throws Exception {  
  15.         ByteArrayOutputStream outSteam = new ByteArrayOutputStream();  
  16.         byte[] buffer = new byte[4096];  
  17.         int len = 0;  
  18.         while ((len = inStream.read(buffer)) != -1) {  
  19.             outSteam.write(buffer, 0, len);  
  20.         }  
  21.         outSteam.close();  
  22.         inStream.close();  
  23.         return outSteam.toByteArray();  
  24.     }  
  25.       
  26.     public static Drawable loadImageFromUrl(String url){  
  27.         URL m;  
  28.         InputStream i = null;  
  29.         try {  
  30.             m = new URL(url);  
  31.             i = (InputStream) m.getContent();  
  32.         } catch (MalformedURLException e1) {  
  33.             e1.printStackTrace();  
  34.         } catch (IOException e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.         Drawable d = Drawable.createFromStream(i, "src");  
  38.         return d;  
  39.     }  
  40.       
  41.     public static Drawable getDrawableFromUrl(String url) throws Exception{  
  42.          return Drawable.createFromStream(getRequest(url),null);  
  43.     }  
  44.       
  45.     public static Bitmap getBitmapFromUrl(String url) throws Exception{  
  46.         byte[] bytes = getBytesFromUrl(url);  
  47.         return byteToBitmap(bytes);  
  48.     }  
  49.       
  50.     public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{  
  51.         byte[] bytes = getBytesFromUrl(url);  
  52.         Bitmap bitmap = byteToBitmap(bytes);  
  53.         return toRoundCorner(bitmap, pixels);  
  54.     }   
  55.       
  56.     public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{  
  57.         byte[] bytes = getBytesFromUrl(url);  
  58.         BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);  
  59.         return toRoundCorner(bitmapDrawable, pixels);  
  60.     }   
  61.       
  62.     public static byte[] getBytesFromUrl(String url) throws Exception{  
  63.          return readInputStream(getRequest(url));  
  64.     }  
  65.       
  66.     public static Bitmap byteToBitmap(byte[] byteArray){  
  67.         if(byteArray.length!=0){   
  68.             return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);   
  69.         }   
  70.         else {   
  71.             return null;   
  72.         }    
  73.     }  
  74.       
  75.     public static Drawable byteToDrawable(byte[] byteArray){  
  76.         ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);  
  77.         return Drawable.createFromStream(ins, null);  
  78.     }  
  79.       
  80.     public static byte[] Bitmap2Bytes(Bitmap bm){   
  81.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  82.         bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
  83.         return baos.toByteArray();  
  84.     }  
  85.       
  86.     public static Bitmap drawableToBitmap(Drawable drawable) {  
  87.   
  88.         Bitmap bitmap = Bitmap  
  89.                 .createBitmap(  
  90.                         drawable.getIntrinsicWidth(),  
  91.                         drawable.getIntrinsicHeight(),  
  92.                         drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
  93.                                 : Bitmap.Config.RGB_565);  
  94.         Canvas canvas = new Canvas(bitmap);  
  95.         drawable.setBounds(00, drawable.getIntrinsicWidth(),  
  96.                 drawable.getIntrinsicHeight());  
  97.         drawable.draw(canvas);  
  98.         return bitmap;  
  99.     }  
  100.       
  101.         /** 
  102.           * 图片去色,返回灰度图片 
  103.           * @param bmpOriginal 传入的图片 
  104.          * @return 去色后的图片 
  105.          */  
  106.         public static Bitmap toGrayscale(Bitmap bmpOriginal) {  
  107.             int width, height;  
  108.             height = bmpOriginal.getHeight();  
  109.             width = bmpOriginal.getWidth();      
  110.       
  111.             Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);  
  112.             Canvas c = new Canvas(bmpGrayscale);  
  113.             Paint paint = new Paint();  
  114.             ColorMatrix cm = new ColorMatrix();  
  115.             cm.setSaturation(0);  
  116.             ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);  
  117.             paint.setColorFilter(f);  
  118.             c.drawBitmap(bmpOriginal, 00, paint);  
  119.             return bmpGrayscale;  
  120.         }  
  121.           
  122.           
  123.         /** 
  124.          * 去色同时加圆角 
  125.          * @param bmpOriginal 原图 
  126.          * @param pixels 圆角弧度 
  127.          * @return 修改后的图片 
  128.          */  
  129.         public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {  
  130.             return toRoundCorner(toGrayscale(bmpOriginal), pixels);  
  131.         }  
  132.           
  133.         /** 
  134.          * 把图片变成圆角 
  135.          * @param bitmap 需要修改的图片 
  136.          * @param pixels 圆角的弧度 
  137.          * @return 圆角图片 
  138.          */  
  139.         public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {  
  140.       
  141.             Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);  
  142.             Canvas canvas = new Canvas(output);  
  143.       
  144.             final int color = 0xff424242;  
  145.             final Paint paint = new Paint();  
  146.             final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());  
  147.             final RectF rectF = new RectF(rect);  
  148.             final float roundPx = pixels;  
  149.       
  150.             paint.setAntiAlias(true);  
  151.             canvas.drawARGB(0000);  
  152.             paint.setColor(color);  
  153.             canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
  154.       
  155.             paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
  156.             canvas.drawBitmap(bitmap, rect, rect, paint);  
  157.       
  158.             return output;  
  159.         }  
  160.       
  161.           
  162.        /** 
  163.          * 使圆角功能支持BitampDrawable 
  164.          * @param bitmapDrawable  
  165.          * @param pixels  
  166.          * @return 
  167.          */  
  168.         public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {  
  169.             Bitmap bitmap = bitmapDrawable.getBitmap();  
  170.             bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));  
  171.             return bitmapDrawable;  
  172.         }  
  173. }  
原创粉丝点击