Android(安卓)图片加圆角以及时间处理工具类
16lz
2021-01-24
给图片加上圆角效果好看多了。
加圆角,Drawable,Bitmap,BitmapDrawable,字节数组之间的相互转换。
- publicclassImageUtil{
- publicstaticInputStreamgetRequest(Stringpath)throwsException{
- URLurl=newURL(path);
- HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- if(conn.getResponseCode()==200){
- returnconn.getInputStream();
- }
- returnnull;
- }
- publicstaticbyte[]readInputStream(InputStreaminStream)throwsException{
- ByteArrayOutputStreamoutSteam=newByteArrayOutputStream();
- byte[]buffer=newbyte[4096];
- intlen=0;
- while((len=inStream.read(buffer))!=-1){
- outSteam.write(buffer,0,len);
- }
- outSteam.close();
- inStream.close();
- returnoutSteam.toByteArray();
- }
- publicstaticDrawableloadImageFromUrl(Stringurl){
- URLm;
- InputStreami=null;
- try{
- m=newURL(url);
- i=(InputStream)m.getContent();
- }catch(MalformedURLExceptione1){
- e1.printStackTrace();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- Drawabled=Drawable.createFromStream(i,"src");
- returnd;
- }
- publicstaticDrawablegetDrawableFromUrl(Stringurl)throwsException{
- returnDrawable.createFromStream(getRequest(url),null);
- }
- publicstaticBitmapgetBitmapFromUrl(Stringurl)throwsException{
- byte[]bytes=getBytesFromUrl(url);
- returnbyteToBitmap(bytes);
- }
- publicstaticBitmapgetRoundBitmapFromUrl(Stringurl,intpixels)throwsException{
- byte[]bytes=getBytesFromUrl(url);
- Bitmapbitmap=byteToBitmap(bytes);
- returntoRoundCorner(bitmap,pixels);
- }
- publicstaticDrawablegeRoundDrawableFromUrl(Stringurl,intpixels)throwsException{
- byte[]bytes=getBytesFromUrl(url);
- BitmapDrawablebitmapDrawable=(BitmapDrawable)byteToDrawable(bytes);
- returntoRoundCorner(bitmapDrawable,pixels);
- }
- publicstaticbyte[]getBytesFromUrl(Stringurl)throwsException{
- returnreadInputStream(getRequest(url));
- }
- publicstaticBitmapbyteToBitmap(byte[]byteArray){
- if(byteArray.length!=0){
- returnBitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
- }
- else{
- returnnull;
- }
- }
- publicstaticDrawablebyteToDrawable(byte[]byteArray){
- ByteArrayInputStreamins=newByteArrayInputStream(byteArray);
- returnDrawable.createFromStream(ins,null);
- }
- publicstaticbyte[]Bitmap2Bytes(Bitmapbm){
- ByteArrayOutputStreambaos=newByteArrayOutputStream();
- bm.compress(Bitmap.CompressFormat.PNG,100,baos);
- returnbaos.toByteArray();
- }
- publicstaticBitmapdrawableToBitmap(Drawabledrawable){
- Bitmapbitmap=Bitmap
- .createBitmap(
- drawable.getIntrinsicWidth(),
- drawable.getIntrinsicHeight(),
- drawable.getOpacity()!=PixelFormat.OPAQUE?Bitmap.Config.ARGB_8888
- :Bitmap.Config.RGB_565);
- Canvascanvas=newCanvas(bitmap);
- drawable.setBounds(0,0,drawable.getIntrinsicWidth(),
- drawable.getIntrinsicHeight());
- drawable.draw(canvas);
- returnbitmap;
- }
- /**
- *图片去色,返回灰度图片
- *@parambmpOriginal传入的图片
- *@return去色后的图片
- */
- publicstaticBitmaptoGrayscale(BitmapbmpOriginal){
- intwidth,height;
- height=bmpOriginal.getHeight();
- width=bmpOriginal.getWidth();
- BitmapbmpGrayscale=Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);
- Canvasc=newCanvas(bmpGrayscale);
- Paintpaint=newPaint();
- ColorMatrixcm=newColorMatrix();
- cm.setSaturation(0);
- ColorMatrixColorFilterf=newColorMatrixColorFilter(cm);
- paint.setColorFilter(f);
- c.drawBitmap(bmpOriginal,0,0,paint);
- returnbmpGrayscale;
- }
- /**
- *去色同时加圆角
- *@parambmpOriginal原图
- *@parampixels圆角弧度
- *@return修改后的图片
- */
- publicstaticBitmaptoGrayscale(BitmapbmpOriginal,intpixels){
- returntoRoundCorner(toGrayscale(bmpOriginal),pixels);
- }
- /**
- *把图片变成圆角
- *@parambitmap需要修改的图片
- *@parampixels圆角的弧度
- *@return圆角图片
- */
- publicstaticBitmaptoRoundCorner(Bitmapbitmap,intpixels){
- Bitmapoutput=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Config.ARGB_8888);
- Canvascanvas=newCanvas(output);
- finalintcolor=0xff424242;
- finalPaintpaint=newPaint();
- finalRectrect=newRect(0,0,bitmap.getWidth(),bitmap.getHeight());
- finalRectFrectF=newRectF(rect);
- finalfloatroundPx=pixels;
- paint.setAntiAlias(true);
- canvas.drawARGB(0,0,0,0);
- paint.setColor(color);
- canvas.drawRoundRect(rectF,roundPx,roundPx,paint);
- paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));
- canvas.drawBitmap(bitmap,rect,rect,paint);
- returnoutput;
- }
- /**
- *使圆角功能支持BitampDrawable
- *@parambitmapDrawable
- *@parampixels
- *@return
- */
- publicstaticBitmapDrawabletoRoundCorner(BitmapDrawablebitmapDrawable,intpixels){
- Bitmapbitmap=bitmapDrawable.getBitmap();
- bitmapDrawable=newBitmapDrawable(toRoundCorner(bitmap,pixels));
- returnbitmapDrawable;
- }
- }
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; }}
时间类:
- publicclassTimeUtil{
- publicstaticStringconverTime(longtimestamp){
- longcurrentSeconds=System.currentTimeMillis()/1000;
- longtimeGap=currentSeconds-timestamp;//与现在时间相差秒数
- StringtimeStr=null;
- if(timeGap>24*60*60){//1天以上
- timeStr=timeGap/(24*60*60)+"天前";
- }elseif(timeGap>60*60){//1小时-24小时
- timeStr=timeGap/(60*60)+"小时前";
- }elseif(timeGap>60){//1分钟-59分钟
- timeStr=timeGap/60+"分钟前";
- }else{//1秒钟-59秒钟
- timeStr="刚刚";
- }
- returntimeStr;
- }
- publicstaticStringgetStandardTime(longtimestamp){
- SimpleDateFormatsdf=newSimpleDateFormat("MM月dd日HH:mm");
- Datedate=newDate(timestamp*1000);
- sdf.format(date);
- returnsdf.format(date);
- }
- }
更多相关文章
- Android(安卓)gallery实现图片的左右循环旋转源码分享
- Theme.Holo主题 中tab同时显示图片和文字
- 我的Android进阶之旅------>android Matrix图片随意的放大缩小,
- android 通过文件名获取SD卡视频缩略图
- 关于android 获得 图片的方式
- Android编程示例之——人像检测
- Android(安卓)-- 图片异步上传到PHP服务器
- Android(安卓)-- 打开本地图片且显示路径
- Java乔晓松-android使用ImageSwitcher布局的电子相册&服务器获取