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的长宽大小)

posted @ 2013-04-14 13:28  DET橙  阅读(743)  评论(0)    收藏  举报