文件处理
文件都是通过路径来获得,图片也是
/** * 得到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的长宽大小)