imageLoader画像をローカルアルバムに保存

3960 ワード

まずiamgeLoaderで3段階キャッシュを設定
DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true).build();
        ImageLoader.getInstance().loadImage(iamgeUrl,displayImageOptions, new ImageLoadingListener() {
....
...
}

名前はHashCodeで画像の名前として使われ、ユーザーが何度もクリックして画像を保存すれば複数枚にならない.
String fileName = new HashCodeFileNameGenerator().generate(imageUri) + ".jpeg";

画像のダウンロードが終わると、主にアルバムに保存され、アルバムの名前はアプリの名前です.アプリを知っているようです.このようにすると、ユーザーが表示するのに便利です.
path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()+"/"+getResources().getString(R.string.app_name);

アナウンスアルバム更新しました~~
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    Uri uri = Uri.fromFile(saveImageFile);
                    intent.setData(uri);
                    PhotoActivity.this.sendBroadcast(intent);// , !, file 

次は完全なコードです~~
/***
     *  SD 
     */
    public void saveImgToSD(String iamgeUrl) {


        DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true).build();
        ImageLoader.getInstance().loadImage(iamgeUrl,displayImageOptions, new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {

            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                String fileName = new HashCodeFileNameGenerator().generate(imageUri) + ".jpeg";


             //   String path =StorageUtils.getOwnCacheDirectory(PhotoActivity.this, "chuizhicai/image/userSaveImage").getPath();// ;\
                String path;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO) {
                    path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()+"/"+getResources().getString(R.string.app_name);
                }else {
                    path = StorageUtils.getOwnCacheDirectory(PhotoActivity.this, "chuizhicai/image/userSaveImage").getPath();//   }
                }
                File saveImageFile = ImgUtil.saveFile(loadedImage, fileName, path);
                if (saveImageFile!=null){
                    ToastUtil.Show_LONG(PhotoActivity.this, String.format("%s%s/%s", " ", path, fileName));
                    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    Uri uri = Uri.fromFile(saveImageFile);
                    intent.setData(uri);
                    PhotoActivity.this.sendBroadcast(intent);// , !, file 
                }


                else ToastUtil.Show_SHORT(PhotoActivity.this, " ");

                // bitmap 
                loadedImage.recycle();
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {

            }
        });

ImgUtil.saveFile() :
public static File saveFile(Bitmap bm, String fileName, String path)  {

		File myCaptureFile = null;
		try {
			String subForder = path;
			File foder = new File(subForder);
			if (!foder.exists()) {
				foder.mkdirs();
			}
			 myCaptureFile = new File(subForder, fileName);
			if (!myCaptureFile.exists()) {
				myCaptureFile.createNewFile();
			}
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
			bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
			bos.flush();
			bos.close();
		}catch (IOException e){

			e.printStackTrace();
		}

		return myCaptureFile;

	}