--- android/Side9/src/dk/thoerup/side9/ImageAdapter.java 2010/08/09 17:06:22 1012 +++ android/Side9/src/dk/thoerup/side9/ImageAdapter.java 2010/08/10 07:01:40 1013 @@ -1,14 +1,19 @@ package dk.thoerup.side9; import java.io.File; +import java.io.FileOutputStream; import java.io.FilenameFilter; +import java.io.IOException; import java.util.ArrayList; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Bitmap.CompressFormat; +import android.net.Uri; import android.os.Environment; import android.util.DisplayMetrics; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -42,19 +47,45 @@ File files[] = root.listFiles( new ExtensionFilter("jpg") ); - for (File f : files) { - Bitmap bmp = BitmapFactory.decodeFile( f.getPath() ); - Bitmap scaled = Bitmap.createScaledBitmap(bmp, bmp.getWidth()/4, bmp.getHeight()/4, true); - - mBitmapPaths.add( f.getPath() ); - mBitmaps.add(scaled); + + String thumbPath = path + "/.thumb/"; + + File thumbDir = new File(thumbPath); + if (! thumbDir.exists()) { + thumbDir.mkdirs(); + } + + + for (File f : files) { + + String fileName = f.getName(); + File thumb = new File ( thumbPath + fileName ); + + if (! thumb.exists()) { + Bitmap bmp = BitmapFactory.decodeFile( f.getPath() ); + Bitmap scaled = Bitmap.createScaledBitmap(bmp, bmp.getWidth()/4, bmp.getHeight()/4, true); + mBitmaps.add(scaled); + try { + FileOutputStream fos = new FileOutputStream(thumb); + scaled.compress(CompressFormat.JPEG, 90, fos); + + } catch (IOException e) { + Log.e("Side9", "error", e); + } + + } else { + Bitmap thumbBmp = BitmapFactory.decodeFile( thumb.getPath()); + mBitmaps.add(thumbBmp); + } + mBitmapPaths.add( f.getPath() ); + } size = getSize(); } public int getCount() { - return mBitmaps.size(); + return mBitmapPaths.size(); } public Object getItem(int position) { @@ -96,7 +127,7 @@ imageView = (ImageView) convertView; } - + //imageView.setImageURI( Uri.parse(mThumbPaths.get(position)) ); imageView.setImageBitmap( mBitmaps.get(position) ); return imageView; }