zoukankan      html  css  js  c++  java
  • Android 图片,文件处理

    文件处理

    文件都是通过路径来获得,图片也是
    /**
         * 得到url路径下所有图片目录路径
         * @param url 路径
         * @param  imageDirectorys 目录路径列表
         */
        
        public static void getDirectorys(String url,List<String> imageDirectorys)//得到url路径下所有图片目录
        {
            File files=new File(url);
            File[] file=files.listFiles();//得到该文件夹下所有文件夹和文件
            if(file!=null)
            for(File f:file)
            {
                if(f.isDirectory())
                {
                    imageDirectorys.add(f.getPath());
                }
            }
        }
    /**
         * 得到url路径下所有图片路径
         * @param url 路径
         * @param  imageDirectorys 图片路径列表
         */
        public static void getFiles(String url, List<String> imagePath)//得到url路径下所有图片文件
        {
            File files=new File(url);
            File[] file=files.listFiles();//得到该文件夹下所有文件夹和文件
            for(File f:file)
            {
                if(f.isDirectory())
                {
                    getFiles(f.getAbsolutePath(), imagePath);
                }
                else
                {
                    if(isImageFile(f.getPath()))
                        imagePath.add(f.getPath());
                }
            }
        }

    在android里显示图片的方法:

    定义一个ImageView image;//用来显示图片的view

    定义一个Bitmap bm;//用来获得图片

    bm =BitmapFactory.decodeFile(path);//通过路径获得图片

    image.setImageBitmap(bm);//设置要显示的bitmap

    在Android中,由于内存限制,尺寸较大的Bitmap无法显示,如1M多大小,按上图方法就无法显示出来,所以需要对原始图片进行裁剪

         /**
             * 修改图片
             * @param imagePath 要修改的图片的路径
             * @param  maxH 新图片最大高度
             */
         public static Bitmap getResizeImage(String imagePath,int maxH){
    BitmapFactory.Options options
    = new BitmapFactory.Options(); options.inJustDecodeBounds = true; // 获取这个图片的宽和高 Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options); //此时返回bm为空 //计算缩放比 int be = (int)(options.outHeight / (float)maxH); int ys = options.outHeight % maxH;//求余数 float fe = ys / (float)maxH; if(fe>=0.5)be = be + 1; if (be <= 0) be = 1; options.inSampleSize = be; //重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false options.inJustDecodeBounds = false; bitmap=BitmapFactory.decodeFile(imagePath,options); return bitmap; }

    把Bitmap改动后 写入到某个路径下

    File file=new File(path);//创建文件对象
            try {
                file.createNewFile();//创建新文件
                FileOutputStream fileOS=new FileOutputStream(file);//创建文件输出流对象    
                image.compress(Bitmap.CompressFormat.JPEG, 100,fileOS);//把图片内容压缩为JPEG格式输出到输出流对象,可设置压缩质量0-100
                fileOS.flush();//将缓冲区数据全部写道输出流中
                fileOS.close();
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    ImageView 常用XML属性

    android:adjustViewBound 设置ImageView是否调整自己边界来保持所显示图片的长宽比

    android:maxHeight(Width)  设置adjustViewBound属性为true时,才会生效

    android:scaleType 设置显示的图片如何缩放或移动(一般是固定了ImageView的长宽大小)

  • 相关阅读:
    第三方登陆--新浪
    YII2.0邮箱发送
    MYSQL 数据库实现远程连接
    MEMCACHE所有方法及参数详解
    把时间转成适合符合日常习惯的格式【js】
    mvc的自带json序列化的datetime在js中的解析
    如何在word中的第3+n页处插入页面并重新从1开始
    古怪的运算符=+
    【摘录】某表含有N个字段超精简模糊查询方法
    C#中快速释放内存,任务管理器可查证
  • 原文地址:https://www.cnblogs.com/cschen/p/3020276.html
Copyright © 2011-2022 走看看