imageLoader画像をローカルアルバムに保存
3960 ワード
まずiamgeLoaderで3段階キャッシュを設定
名前はHashCodeで画像の名前として使われ、ユーザーが何度もクリックして画像を保存すれば複数枚にならない.
画像のダウンロードが終わると、主にアルバムに保存され、アルバムの名前はアプリの名前です.アプリを知っているようです.このようにすると、ユーザーが表示するのに便利です.
アナウンスアルバム更新しました~~
次は完全なコードです~~
ImgUtil.saveFile() :
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;
}