admin管理员组文章数量:1516870
Android 保存bitmap到相册
安卓原生的保存相册方法可以用但是可调参数很少,对三星这样的手机支持不好,图片的创建时间一般为1970.1.1,可以通过复写android原生的方法来添加相关参数,比如照片创建时间和gps位置信息什么的
下面是保存到相册用的函数
/*** Insert an image and create a thumbnail for it.** @param cr The content resolver to use* @param source The stream to use for the image* @param title The name of the image* @param description The description of the image* @return The URL to the newly created image, or <code>null</code> if the image failed to be stored* for any reason.*/public static String insertImage(ContentResolver cr, Bitmap source,String title, String description, String fileName) {ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.TITLE, title);values.put(MediaStore.Images.Media.DESCRIPTION, description);values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");values.put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis());values.put(MediaStore.Images.Media.DATE_MODIFIED, System.currentTimeMillis()));values.put(MediaStore.Images.Media.DATE_TAKEN,System.currentTimeMillis());
);values.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);values.put(MediaStore.Images.Media.LATITUDE,36);values.put(MediaStore.Images.Media.LONGITUDE, 120);values.put(MediaStore.Images.Media.BUCKET_DISPLAY_NAME, "6666");Uri url = null;String stringUrl = null; /* value to be returned */try {url = cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);if (source != null) {OutputStream imageOut = cr.openOutputStream(url);try {sourcepress(Bitmap.CompressFormat.JPEG, 36, imageOut);} finally {imageOut.close();}long id = ContentUris.parseId(url);// Wait until MINI_KIND thumbnail is generated.Bitmap miniThumb = MediaStore.Images.Thumbnails.getThumbnail(cr, id,MediaStore.Images.Thumbnails.MINI_KIND, null);// This is for backward compatibility.Bitmap microThumb = StoreThumbnail(cr, miniThumb, id, 50F, 50F,MediaStore.Images.Thumbnails.MICRO_KIND);} else {JLogUtils.i("Alex", "Failed to create thumbnail, removing original");cr.delete(url, null, null);url = null;}} catch (Exception e) {Log.i("Alex", "Failed to insert image", e);if (url != null) {cr.delete(url, null, null);url = null;}}if (url != null) {stringUrl = url.toString();}return stringUrl;}private static final Bitmap StoreThumbnail(ContentResolver cr,Bitmap source,long id,float width, float height,int kind) {// create the matrix to scale itMatrix matrix = new Matrix();float scaleX = width / source.getWidth();float scaleY = height / source.getHeight();matrix.setScale(scaleX, scaleY);Bitmap thumb = Bitmap.createBitmap(source, 0, 0,source.getWidth(),source.getHeight(), matrix,true);ContentValues values = new ContentValues(4);values.put(MediaStore.Images.Thumbnails.KIND, kind);values.put(MediaStore.Images.Thumbnails.IMAGE_ID, (int) id);values.put(MediaStore.Images.Thumbnails.HEIGHT, thumb.getHeight());values.put(MediaStore.Images.Thumbnails.WIDTH, thumb.getWidth());Uri url = cr.insert(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, values);try {OutputStream thumbOut = cr.openOutputStream(url);thumbpress(Bitmap.CompressFormat.JPEG, 100, thumbOut);thumbOut.close();return thumb;} catch (FileNotFoundException ex) {return null;} catch (IOException ex) {return null;}}
调用方法
try {ContentResolver cr = SelectPhotoActivity.this.getContentResolver();JImageUtils.insertImage(cr, currPhoto, "qraved" + JTimeUtils.getCurrentTimeLong(), "a photo from app", "我是filename没啥用");} catch (Exception e) {e.printStackTrace();}//对某些不更新相册的应用程序强制刷新Intent intent2 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);Uri uri = Uri.fromFile(new File("/sdcard/image.jpg"));//固定写法intent2.setData(uri);PhotoActivity.this.sendBroadcast(intent2);
本文标签: Android 保存bitmap到相册
版权声明:本文标题:Android 保存bitmap到相册 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1707162314a712650.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论