`
mark_java
  • 浏览: 16739 次
  • 性别: Icon_minigender_1
  • 来自: 新疆
社区版块
存档分类
最新评论

图片圆角、缩放等效果工具类

 
阅读更多
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 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);
        }
}
分享到:
评论

相关推荐

    android工具类 26个实用工具类

    5. **图片处理工具类**:可能包括图片的加载、缩放、裁剪、圆角处理等功能,如`ImageUtil`,可以优化图片加载的性能,避免内存溢出。 6. **文件操作工具类**:如`FileUtil`,提供文件的创建、删除、复制、移动、...

    android 开发常用到的工具类集锦

    3. **图片处理工具类**:在Android应用中,图片加载和处理是必不可少的,比如图片的缩放、裁剪、圆角转换等。 Glide 和 Picasso 是两个常用的图片加载库,它们不仅能够优化内存管理,还能实现图片的缓存策略,提高...

    安卓头像制作图片圆角剪裁相关-CropImageView图片裁剪的小控件.rar

    本资源“安卓头像制作图片圆角剪裁相关-CropImageView图片裁剪的小控件.rar”提供了一个名为CropImageView的小型图片裁剪控件,它允许用户对图片进行自由裁剪并实现圆角效果。下面我们将详细探讨这个控件及其相关...

    android 常用快速开发集成工具类

    5. **图片处理**:如图片裁剪、缩放、圆角处理,以及像Glide、Picasso这样的图片加载库的封装,优化图片显示。 6. **权限管理**:针对Android 6.0(API 23)及以上版本的动态权限申请的工具类,简化权限申请流程。 ...

    Android应用源码之Image(图片工具类大全)_源码.zip

    - 对于更复杂的图片操作,工具类可能包含动画效果,如淡入淡出、旋转、缩放等,这些可以通过Animation或Transition API来实现。 7. **异步加载与处理**: - 高效的图片工具类通常会在后台线程处理图片,以避免...

    Android常用工具类

    - `ImageLoader`:用于加载、缓存和显示图片,可能包括从网络、本地文件系统或资源加载图片,并支持图片的缩放、裁剪和圆角处理。 5. **文件操作工具类**: - `FileUtils`:提供了文件的创建、删除、复制、移动等...

    基于Android系统Api封装常用工具类

    4. **图片处理**:可能包括图片的加载、压缩、裁剪、圆角处理等功能,可能会用到Glide、Picasso等图片加载库的二次封装。 5. **文件操作**:提供读写文件、文件夹操作、资源文件的读取等方法,方便对本地存储进行...

    Android图片处理工具类,包括: 图片查看、照片墙、bitmap转存、圆角、剪切、图片加载缓存、图片压缩等

    `Android图片处理工具类`是开发者必备的利器,能够帮助我们有效地管理图片资源,提高应用性能。以下是一些关于这个主题的关键知识点: 1. **图片查看**: - `ImageView`:Android自带的用于显示图片的基础组件,...

    bitmap图片处理工具类

    "Bitmap图片处理工具类" 提供了多种对位图(Bitmap)进行操作的功能,如颜色转换、图像分割、缩放、旋转、调整透明度、生成圆角图片以及文字与倒影效果的绘制。接下来,我们将深入探讨这些知识点。 首先,`...

    安卓头像制作图片圆角剪裁相关-andoird拖动模糊效果编辑;圆形位置变化大小变化裁剪模糊图片.rar

    在安卓中,实现图片圆角效果通常通过BitmapShader类来完成。BitmapShader可以将一个位图应用于一个形状,比如圆形或带有圆角的矩形。我们可以创建一个RoundRectShape对象,然后使用它和BitmapShader来创建一个带有...

    iOS常用的类别工具类

    - `UIImage+Extension`: 图片处理,如裁剪、缩放、颜色转换等。 7. **使用注意事项** - 类别可能会引起命名冲突,因此在编写类别时应尽量明确其用途并遵循良好的命名规范。 - 如果需要覆盖父类方法,应优先考虑...

    Android开发必不可少的工具类

    如`GlideUtils`或`PicassoUtils`,它们简化了图片的加载、缓存和占位符设置,能够处理图片的缩放、裁剪和圆角等需求,有效防止内存溢出。 4. **偏好设置工具类**: `SharedPreferencesUtils`用于存储和读取用户...

    java对图片改变大小,png防止变黑,加圆角 圆角外透明

    这个例子中,我们首先读取PNG图片,然后进行等比例缩放,接着创建一个圆角矩形覆盖整个图像,并应用模糊效果以平滑边缘。最后,我们将处理后的图像保存为新的PNG文件。 请注意,这只是一个基础示例,实际应用中可能...

    基于Android系统Api封装常用工具类.zip

    4. **图片处理**:如加载、缩放、裁剪、圆角处理等。Android的`Bitmap`类处理图片较为繁琐,工具类可以简化这些操作,同时可能还包含了内存和磁盘缓存策略。 5. **权限管理**:随着Android 6.0(API level 23)引入...

    圆角图片(可带边框)

    例如,`RoundedImageView`是一个流行的库,它扩展了Android的`ImageView`类,提供了设置图片圆角、边框宽度和颜色等功能。这个库的使用非常简单,只需要在布局文件中引入并设置相应的属性,或者在代码中实例化并进行...

    iOS 开发中总结的各种工具类。

    此外,工具类可能还包括从网络或bundle中加载图片,以及进行圆角处理和透明度设置等功能。 UIScreen工具类通常涉及到屏幕尺寸、分辨率和像素密度的相关操作。在iOS设备多样化的今天,适配不同屏幕尺寸和分辨率变得...

    Android圆角头像工具类详解

    很多android应用都用到了圆角头像,或者一些圆角图片处理起来比较麻烦,直接上圆角图片工具类 public class CircleImageView extends ImageView { // 缩放类型 private static final ScaleType SCALE_TYPE = ...

    常用工具类

    Glide和Picasso是流行的图片加载库,它们能自动优化内存使用和网络请求,同时支持图片的裁剪、缩放和圆角处理等功能。 9. Toast与Snackbar: 这两种UI组件用于短暂显示提示信息。Toast简单易用,但位置固定且无法...

    安卓头像制作图片圆角剪裁相关-高仿qq我的资料头像裁剪.zip

    在安卓平台上,头像制作和图片圆角剪裁是一个常见的需求,特别是在社交应用中,如QQ。本资源包“安卓头像制作图片圆角剪裁相关-高仿qq我的资料头像裁剪.zip”提供了相关的代码示例和参考资料,帮助开发者实现类似QQ...

Global site tag (gtag.js) - Google Analytics