Android開(kāi)發(fā)實(shí)現(xiàn)的保存圖片到相冊(cè)功能示例
本文實(shí)例講述了Android開(kāi)發(fā)實(shí)現(xiàn)的保存圖片到相冊(cè)功能。分享給大家供大家參考,具體如下:
廢話不多說(shuō),先上效果:

點(diǎn)擊圖片 調(diào)用savephoto的SaveBitmapFromView(View view);方法自動(dòng)保存圖片
//點(diǎn)擊圖片保存
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] PERMISSIONS = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };
//檢測(cè)是否有寫的權(quán)限
int permission = ContextCompat.checkSelfPermission(MainActivity.this,
"android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {
// 沒(méi)有寫的權(quán)限,去申請(qǐng)寫的權(quán)限,會(huì)彈出對(duì)話框
ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS,1);
}
try {
//創(chuàng)建savephoto類保存圖片
SavePhoto savePhoto = new SavePhoto(MainActivity.this);
savePhoto.SaveBitmapFromView(imageView);
} catch (ParseException e) {
e.printStackTrace();
}
}
});
SavePhoto類具體實(shí)現(xiàn)
參考自:http://www.dhdzp.com/article/158635.htm
但原博主部分代碼有誤 我稍加了修改
public class SavePhoto{
//存調(diào)用該類的活動(dòng)
Context context;
public SavePhoto(Context context) {
this.context = context;
}
//保存文件的方法:
public void SaveBitmapFromView(View view) throws ParseException {
int w = view.getWidth();
int h = view.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
view.layout(0, 0, w, h);
view.draw(c);
// 縮小圖片
Matrix matrix = new Matrix();
matrix.postScale(0.5f,0.5f); //長(zhǎng)和寬放大縮小的比例
bmp = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),bmp.getHeight(),matrix,true);
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
saveBitmap(bmp,bmp.toString() + ".JPEG");
}
/*
* 保存文件,文件名為當(dāng)前日期
*/
public void saveBitmap(Bitmap bitmap, String bitName){
String fileName ;
File file ;
if(Build.BRAND .equals("Xiaomi") ){ // 小米手機(jī)
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;
}else{ // Meizu 、Oppo
Log.v("qwe","002");
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;
}
file = new File(fileName);
if(file.exists()){
file.delete();
}
FileOutputStream out;
try{
out = new FileOutputStream(file);
// 格式為 JPEG,照相機(jī)拍出的圖片為JPEG格式的,PNG格式的不能顯示在相冊(cè)中
if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))
{
out.flush();
out.close();
// 插入圖庫(kù)
MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), bitName, null);
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
// 發(fā)送廣播,通知刷新圖庫(kù)的顯示
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
}
}
布局于其他部分(GridView選擇圖片等)代碼:
http://www.dhdzp.com/article/158666.htm
**另附:**從相冊(cè)中選擇圖片的方法
//www.dhdzp.com/article/158640.htm
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android WebView實(shí)現(xiàn)文件下載功能
這篇文章主要為大家詳細(xì)介紹了Android WebView實(shí)現(xiàn)文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android自定義View展示W(wǎng)ifi信號(hào)強(qiáng)弱指示方法示例
這篇文章主要給大家介紹了關(guān)于Android自定義View展示W(wǎng)ifi信號(hào)強(qiáng)弱指示的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),文末給出了完整的實(shí)例供大家參考學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
Android開(kāi)發(fā)之AlertDialog實(shí)現(xiàn)彈出對(duì)話框
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)之AlertDialog實(shí)現(xiàn)彈出對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
android實(shí)現(xiàn)軟件自動(dòng)更新的步驟
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)軟件自動(dòng)更新的步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android畫圖并保存圖片的具體實(shí)現(xiàn)代碼
這篇文章介紹了在Android中畫圖并保存圖片的實(shí)例,以下是具體的實(shí)現(xiàn)方法,有需要的朋友可以參考一下2013-07-07

