zoukankan      html  css  js  c++  java
  • Android腾讯微薄客户端开发七:图片加圆角以及时间处理工具类

    给图片加上圆角效果好看多了。 
     


    Java代码  收藏代码
    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.       
    174. }  


    Java代码  收藏代码
    1. public class TimeUtil {  
    2.       
    3.     public static String converTime(long timestamp){  
    4.         long currentSeconds = System.currentTimeMillis()/1000;  
    5.         long timeGap = currentSeconds-timestamp;//与现在时间相差秒数  
    6.         String timeStr = null;  
    7.         if(timeGap>24*60*60){//1天以上  
    8.             timeStr = timeGap/(24*60*60)+"天前";  
    9.         }else if(timeGap>60*60){//1小时-24小时  
    10.             timeStr = timeGap/(60*60)+"小时前";  
    11.         }else if(timeGap>60){//1分钟-59分钟  
    12.             timeStr = timeGap/60+"分钟前";  
    13.         }else{//1秒钟-59秒钟  
    14.             timeStr = "刚刚";  
    15.         }  
    16.         return timeStr;  
    17.     }  
    18.       
    19.     public static String getStandardTime(long timestamp){  
    20.         SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");  
    21.         Date date = new Date(timestamp*1000);  
    22.         sdf.format(date);  
    23.         return sdf.format(date);  
    24.     }  
    25. }  
  • 相关阅读:
    【WCF--初入江湖】04 WCF通信模式
    【WCF--初入江湖】03 配置服务
    c++输出左右对齐设置
    setw()函数
    clion更改大括号的位置
    emacs org-mode 中文手册精简版(纯小白)
    c++ string 类型 大小写转换 
    C++中string类型的find 函数
    string类型 C++
    统计单词数---单词与空格
  • 原文地址:https://www.cnblogs.com/afly/p/2360242.html
Copyright © 2011-2022 走看看