您的位置:首页 > 其它

加圆角,Drawable,Bitmap,BitmapDrawable,字节数组之间的相互转换

2011-08-17 14:27 495 查看
加圆角,Drawable,Bitmap,BitmapDrawable,字节数组之间的相互转换。 

Java代码  

public class ImageUtil {   

  

    public static InputStream getRequest(String path) throws Exception {   

        URL url = new URL(path);   

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();   

        conn.setRequestMethod("GET");   

        conn.setConnectTimeout(5000);   

        if (conn.getResponseCode() == 200){   

            return conn.getInputStream();   

        }   

        return null;   

    }   

  

    public static byte[] readInputStream(InputStream inStream) throws Exception {   

        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();   

        byte[] buffer = new byte[4096];   

        int len = 0;   

        while ((len = inStream.read(buffer)) != -1) {   

            outSteam.write(buffer, 0, len);   

        }   

        outSteam.close();   

        inStream.close();   

        return outSteam.toByteArray();   

    }   

       

    public static Drawable loadImageFromUrl(String url){   

        URL m;   

        InputStream i = null;   

        try {   

            m = new URL(url);   

            i = (InputStream) m.getContent();   

        } catch (MalformedURLException e1) {   

            e1.printStackTrace();   

        } catch (IOException e) {   

            e.printStackTrace();   

        }   

        Drawable d = Drawable.createFromStream(i, "src");   

        return d;   

    }   

       

    public static Drawable getDrawableFromUrl(String url) throws Exception{   

         return Drawable.createFromStream(getRequest(url),null);   

    }   

       

    public static Bitmap getBitmapFromUrl(String url) throws Exception{   

        byte[] bytes = getBytesFromUrl(url);   

        return byteToBitmap(bytes);   

    }   

       

    public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{   

        byte[] bytes = getBytesFromUrl(url);   

        Bitmap bitmap = byteToBitmap(bytes);   

        return toRoundCorner(bitmap, pixels);   

    }    

       

    public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{   

        byte[] bytes = getBytesFromUrl(url);   

        BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);   

        return toRoundCorner(bitmapDrawable, pixels);   

    }    

       

    public static byte[] getBytesFromUrl(String url) throws Exception{   

         return readInputStream(getRequest(url));   

    }   

       

    public static Bitmap byteToBitmap(byte[] byteArray){   

        if(byteArray.length!=0){    

            return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);    

        }    

        else {    

            return null;    

        }     

    }   

       

    public static Drawable byteToDrawable(byte[] byteArray){   

        ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);   

        return Drawable.createFromStream(ins, null);   

    }   

       

    public static byte[] Bitmap2Bytes(Bitmap bm){    

        ByteArrayOutputStream baos = new ByteArrayOutputStream();   

        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);   

        return baos.toByteArray();   

    }   

       

    public static Bitmap drawableToBitmap(Drawable drawable) {   

  

        Bitmap bitmap = Bitmap   

                .createBitmap(   

                        drawable.getIntrinsicWidth(),   

                        drawable.getIntrinsicHeight(),   

                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   

                                : Bitmap.Config.RGB_565);   

        Canvas canvas = new Canvas(bitmap);   

        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),   

                drawable.getIntrinsicHeight());   

        drawable.draw(canvas);   

        return bitmap;   

    }   

       

        /**  

          * 图片去色,返回灰度图片  

          * @param bmpOriginal 传入的图片  

         * @return 去色后的图片  

         */  

        public static Bitmap toGrayscale(Bitmap bmpOriginal) {   

            int width, height;   

            height = bmpOriginal.getHeight();   

            width = bmpOriginal.getWidth();       

       

            Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);   

            Canvas c = new Canvas(bmpGrayscale);   

            Paint paint = new Paint();   

            ColorMatrix cm = new ColorMatrix();   

            cm.setSaturation(0);   

            ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);   

            paint.setColorFilter(f);   

            c.drawBitmap(bmpOriginal, 0, 0, paint);   

            return bmpGrayscale;   

        }   

           

           

        /**  

         * 去色同时加圆角  

         * @param bmpOriginal 原图  

         * @param pixels 圆角弧度  

         * @return 修改后的图片  

         */  

        public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {   

            return toRoundCorner(toGrayscale(bmpOriginal), pixels);   

        }   

           

        /**  

         * 把图片变成圆角  

         * @param bitmap 需要修改的图片  

         * @param pixels 圆角的弧度  

         * @return 圆角图片  

         */  

        public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {   

       

            Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);   

            Canvas canvas = new Canvas(output);   

       

            final int color = 0xff424242;   

            final Paint paint = new Paint();   

            final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());   

            final RectF rectF = new RectF(rect);   

            final float roundPx = pixels;   

       

            paint.setAntiAlias(true);   

            canvas.drawARGB(0, 0, 0, 0);   

            paint.setColor(color);   

            canvas.drawRoundRect(rectF, roundPx, roundPx, paint);   

       

            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));   

            canvas.drawBitmap(bitmap, rect, rect, paint);   

       

            return output;   

        }   

       

           

       /**  

         * 使圆角功能支持BitampDrawable  

         * @param bitmapDrawable   

         * @param pixels   

         * @return  

         */  

        public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {   

            Bitmap bitmap = bitmapDrawable.getBitmap();   

            bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));   

            return bitmapDrawable;   

        }   

       

}  

public class ImageUtil {

public static InputStream getRequest(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200){
return conn.getInputStream();
}
return null;
}

public static byte[] readInputStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
return outSteam.toByteArray();
}

public static Drawable loadImageFromUrl(String url){

        URL m;

        InputStream i = null;

        try {

            m = new URL(url);

            i = (InputStream) m.getContent();

        } catch (MalformedURLException e1) {

            e1.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

        Drawable d = Drawable.createFromStream(i, "src");

        return d;

    }

public static Drawable getDrawableFromUrl(String url) throws Exception{
return Drawable.createFromStream(getRequest(url),null);
}

public static Bitmap getBitmapFromUrl(String url) throws Exception{
byte[] bytes = getBytesFromUrl(url);
return byteToBitmap(bytes);
}

public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{
byte[] bytes = getBytesFromUrl(url);
Bitmap bitmap = byteToBitmap(bytes);
return toRoundCorner(bitmap, pixels);


public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{
byte[] bytes = getBytesFromUrl(url);
BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);
return toRoundCorner(bitmapDrawable, pixels);


public static byte[] getBytesFromUrl(String url) throws Exception{
return readInputStream(getRequest(url));
}

public static Bitmap byteToBitmap(byte[] byteArray){
if(byteArray.length!=0){ 

            return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

        } 

        else { 

            return null; 

        }  
}

public static Drawable byteToDrawable(byte[] byteArray){
ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);
return Drawable.createFromStream(ins, null);
}

public static byte[] Bitmap2Bytes(Bitmap bm){ 
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

public static Bitmap drawableToBitmap(Drawable drawable) {

Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}

/**
     * 图片去色,返回灰度图片
     * @param bmpOriginal 传入的图片
    * @return 去色后的图片
    */
   public static Bitmap toGrayscale(Bitmap bmpOriginal) {
       int width, height;
       height = bmpOriginal.getHeight();
       width = bmpOriginal.getWidth();    

       Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
       Canvas c = new Canvas(bmpGrayscale);
       Paint paint = new Paint();
       ColorMatrix cm = new ColorMatrix();
       cm.setSaturation(0);
       ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
       paint.setColorFilter(f);
       c.drawBitmap(bmpOriginal, 0, 0, paint);
       return bmpGrayscale;
   }
   
   
   /**
    * 去色同时加圆角
    * @param bmpOriginal 原图
    * @param pixels 圆角弧度
    * @return 修改后的图片
    */
   public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {
       return toRoundCorner(toGrayscale(bmpOriginal), pixels);
   }
   
   /**
    * 把图片变成圆角
    * @param bitmap 需要修改的图片
    * @param pixels 圆角的弧度
    * @return 圆角图片
    */
   public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

       Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
       Canvas canvas = new Canvas(output);

       final int color = 0xff424242;
       final Paint paint = new Paint();
       final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
       final RectF rectF = new RectF(rect);
       final float roundPx = pixels;

       paint.setAntiAlias(true);
       canvas.drawARGB(0, 0, 0, 0);
       paint.setColor(color);
       canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

       paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
       canvas.drawBitmap(bitmap, rect, rect, paint);

       return output;
   }

   
  /**
    * 使圆角功能支持BitampDrawable
    * @param bitmapDrawable 
    * @param pixels 
    * @return
    */
   public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {
       Bitmap bitmap = bitmapDrawable.getBitmap();
       bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));
       return bitmapDrawable;
   }

}

Java代码  

public class TimeUtil {   

       

    public static String converTime(long timestamp){   

        long currentSeconds = System.currentTimeMillis()/1000;   

        long timeGap = currentSeconds-timestamp;//与现在时间相差秒数   

        String timeStr = null;   

        if(timeGap>24*60*60){//1天以上   

            timeStr = timeGap/(24*60*60)+"天前";   

        }else if(timeGap>60*60){//1小时-24小时   

            timeStr = timeGap/(60*60)+"小时前";   

        }else if(timeGap>60){//1分钟-59分钟   

            timeStr = timeGap/60+"分钟前";   

        }else{//1秒钟-59秒钟   

            timeStr = "刚刚";   

        }   

        return timeStr;   

    }   

       

    public static String getStandardTime(long timestamp){   

        SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");   

        Date date = new Date(timestamp*1000);   

        sdf.format(date);   

        return sdf.format(date);   

    }   

}  

public class TimeUtil {

public static String converTime(long timestamp){
long currentSeconds = System.currentTimeMillis()/1000;
long timeGap = currentSeconds-timestamp;//与现在时间相差秒数
String timeStr = null;
if(timeGap>24*60*60){//1天以上
timeStr = timeGap/(24*60*60)+"天前";
}else if(timeGap>60*60){//1小时-24小时
timeStr = timeGap/(60*60)+"小时前";
}else if(timeGap>60){//1分钟-59分钟
timeStr = timeGap/60+"分钟前";
}else{//1秒钟-59秒钟
timeStr = "刚刚";
}
return timeStr;
}

public static String getStandardTime(long timestamp){
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
Date date = new Date(timestamp*1000);
sdf.format(date);
return sdf.format(date);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: