android 如何获取保存的图片的地址 并存到数据库中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 如何获取保存的图片的地址 并存到数据库中相关的知识,希望对你有一定的参考价值。

安卓中如何获取保存的图片uri 并保存到sqlite数据库中
有如下两种方法,仅供参考
方法一:Java代码

public void saveIcon(Bitmap icon)
if (icon == null)
return;

// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的
// BLOB类型
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 将Bitmap压缩成PNG编码,质量为100%存储
icon.compress(Bitmap.CompressFormat.PNG, 100, os);
// 构造SQLite的Content对象,这里也可以使用
raw ContentValues values = new ContentValues();
// 写入数据库的
Browser.BookmarkColumns.TOUCH_ICON字段 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray());
DBUtil.update(....);
//调用更新或者插入到数据库的方法



方法二:如果数据表入口时一个content:URIJava代码

import android.provider.MediaStore.Images.Media;
import android.content.ContentValues;
import java.io.OutputStream;
// Save the name and description of an image in a ContentValues map.
ContentValues values = new ContentValues(3);
values.put(Media.DISPLAY_NAME, "road_trip_1");
values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles");
values.put(Media.MIME_TYPE, "image/jpeg");
// Add a new record without the bitmap, but with the values just set.
// insert() returns the URI of the new record.
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
// Now get a handle to the file for that record, and save the data into it.
// Here, sourceBitmap is a Bitmap object representing the file to save to the database.
try
OutputStream outStream = getContentResolver().openOutputStream(uri);
sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream);
outStream.close();
catch (Exception e)
Log.e(TAG, "exception while writing image", e);

原文请看http://www.bafenbaosoft.com/post/48.html
参考技术A

用这两个方法应该可以满足你的要求。

参考技术B 方法一:Java代码 public void saveIcon(Bitmap icon) if (icon == null) return; // 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的 // BLOB类型 final ByteArrayOutputStream os = new ByteArrayOutputStream(); // 将Bitmap压缩成PNG编码,质量为100%存储 icon.compress(Bitmap.CompressFormat.PNG, 100, os); // 构造SQLite的Content对象,这里也可以使用raw ContentValues values = new ContentValues(); // 写入数据库的Browser.BookmarkColumns.TOUCH_ICON字段 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray()); DBUtil.update(....);//调用更新或者插入到数据库的方法 方法二:如果数据表入口时一个content:URIJava代码 import android.provider.MediaStore.Images.Media; import android.content.ContentValues; import java.io.OutputStream; // Save the name and description of an image in a ContentValues map. ContentValues values = new ContentValues(3); values.put(Media.DISPLAY_NAME, "road_trip_1"); values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles"); values.put(Media.MIME_TYPE, "image/jpeg"); // Add a new record without the bitmap, but with the values just set. // insert() returns the URI of the new record. Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); // Now get a handle to the file for that record, and save the data into it. // Here, sourceBitmap is a Bitmap object representing the file to save to the database. try OutputStream outStream = getContentResolver().openOutputStream(uri); sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream); outStream.close(); catch (Exception e) Log.e(TAG, "exception while writing image", e); 本回答被提问者采纳 参考技术C 数据库是什么玩意,浏览器可以复制图片地址啊,复制好了随便你黏贴在哪里

Android 下载网络图片保存到本地

通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。

首先需要在manifest上添加一些权限:

  1. <!-- 访问网络的权限 -->  
  2. <uses-permission android:name="android.permission.INTERNET" />  
  3. <!-- 文件读取的权限 -->  
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  5. <!-- 向SD卡中创建或者删除的权限。 -->  
  6. <uses-permission android:name="andorid.permission.MONUN_UNMOUNT_FILESYSTEMS"/>  
  1.   
    1. package com.xjw.test;  
    2.   
    3. import java.io.File;  
    4. import java.io.FileOutputStream;  
    5. import java.io.InputStream;  
    6. import java.net.HttpURLConnection;  
    7. import java.net.URL;  
    8. import android.os.AsyncTask;  
    9. import android.os.Bundle;  
    10. import android.os.Environment;  
    11. import android.os.Handler;  
    12. import android.os.Message;  
    13. import android.app.Activity;  
    14. import android.graphics.Bitmap;  
    15. import android.graphics.BitmapFactory;  
    16. import android.view.View;  
    17. import android.view.View.OnClickListener;  
    18. import android.widget.Button;  
    19. import android.widget.ImageView;  
    20. import android.widget.Toast;  
    21.   
    22. public class MainActivity extends Activity implements OnClickListener{  
    23.   
    24.     Button content;  
    25.     ImageView image;  
    26.     Bitmap bitmap;  
    27.     protected void onCreate(Bundle savedInstanceState) {  
    28.         super.onCreate(savedInstanceState);  
    29.         setContentView(R.layout.activity_main);  
    30.         content=(Button)findViewById(R.id.content);  
    31.         image=(ImageView)findViewById(R.id.image);  
    32.           
    33.         content.setOnClickListener(this);;  
    34.         image.setOnClickListener(this);;  
    35.     }  
    36.       
    37.     /** 
    38.      * 获取网络图片 
    39.      * @param imageurl 图片网络地址 
    40.      * @return Bitmap 返回位图 
    41.      */  
    42.     public Bitmap GetImageInputStream(String imageurl){  
    43.         URL url;  
    44.         HttpURLConnection connection=null;  
    45.         Bitmap bitmap=null;  
    46.         try {  
    47.             url = new URL(imageurl);  
    48.             connection=(HttpURLConnection)url.openConnection();  
    49.             connection.setConnectTimeout(6000); //超时设置  
    50.             connection.setDoInput(true);   
    51.             connection.setUseCaches(false); //设置不使用缓存  
    52.             InputStream inputStream=connection.getInputStream();  
    53.             bitmap=BitmapFactory.decodeStream(inputStream);  
    54.             inputStream.close();  
    55.         } catch (Exception e) {  
    56.             e.printStackTrace();  
    57.         }  
    58.         return bitmap;  
    59.     }  
    60.       
    61.     public void onClick(View v) {  
    62.         switch (v.getId()) {  
    63.         case R.id.content:  
    64.             //加入网络图片地址  
    65.             new Task().execute("http://pic.4j4j.cn/upload/pic/20130617/55695c3c95.jpg");  
    66.             break;  
    67.               
    68.         case R.id.image:  
    69.             //点击图片后将图片保存到SD卡跟目录下的Test文件夹内  
    70.             SavaImage(bitmap, Environment.getExternalStorageDirectory().getPath()+"/Test");  
    71.             Toast.makeText(getBaseContext(), "图片保存", Toast.LENGTH_SHORT).show();  
    72.             break;  
    73.               
    74.         default:  
    75.             break;  
    76.         }  
    77.     }  
    78.       
    79.     Handler handler=new Handler(){  
    80.         public void handleMessage(android.os.Message msg) {  
    81.             if(msg.what==0x123){  
    82.                 image.setImageBitmap(bitmap);  
    83.             }  
    84.         };  
    85.     };  
    86.       
    87.       
    88.     /** 
    89.      * 异步线程下载图片 
    90.      * 
    91.      */  
    92.     class Task extends AsyncTask<String, Integer, Void>{  
    93.   
    94.         protected Void doInBackground(String... params) {  
    95.             bitmap=GetImageInputStream((String)params[0]);  
    96.             return null;  
    97.         }  
    98.           
    99.         protected void onPostExecute(Void result) {  
    100.             super.onPostExecute(result);  
    101.             Message message=new Message();  
    102.             message.what=0x123;  
    103.             handler.sendMessage(message);  
    104.         }  
    105.           
    106.     }  
    107.       
    108.     /** 
    109.      * 保存位图到本地 
    110.      * @param bitmap 
    111.      * @param path 本地路径 
    112.      * @return void 
    113.      */  
    114.     public void SavaImage(Bitmap bitmap, String path){  
    115.         File file=new File(path);  
    116.         FileOutputStream fileOutputStream=null;  
    117.         //文件夹不存在,则创建它  
    118.         if(!file.exists()){  
    119.             file.mkdir();  
    120.         }  
    121.         try {  
    122.             fileOutputStream=new FileOutputStream(path+"/"+System.currentTimeMillis()+".png");  
    123.             bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);  
    124.             fileOutputStream.close();  
    125.         } catch (Exception e) {  
    126.             e.printStackTrace();  
    127.         }  
    128.     }  

以上是关于android 如何获取保存的图片的地址 并存到数据库中的主要内容,如果未能解决你的问题,请参考以下文章

android开发如何把字符串保存为txt格式,并存至SD卡?还有读取的问题?

Android 下载网络图片保存到本地

Android从Uri获取视频图片的真实地址

如何修复 Android 上的图像下载/保存错误

使用webrtc for android,如何在视频通话中保存图片?

android 获取当前壁纸的Drawable对象或者Bitmap。如何获取这张图片的ID或者名称。