手机相册,存照片时候照片成功微信里保存的图片怎样存到相册里但是没有显示出来

Android 保存图片到手机相册
有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片。有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能。解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详情,直接根据路径用IO流写入,Android SDK 的 Build.BRAND 变量为当前手机的品牌,根据不同的品牌来做兼容处理,如果有读者用了这篇文章的代码还是不能在相册显示,可以对着这个思路来做兼容。另外值得一提的是,图片格式需要为JPEG格式才能显示在相册中,我们拍的照片也是JPEG格式的。下面用代码来实现上述的想法。
鉴于目前手机的版本普遍为Android 6.0 以上,读写外部存储文件都需要动态申请权限。这部分代码可以在当前需要读写外部存储文件的Activity中写。
String[] PERMISSIONS = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };
int permission = ContextCompat.checkSelfPermission(this,
"android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, PERMISSIONS,1);
保存文件的方法:
public void SaveBitmapFromView(View view) {
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);
bmp = Bitmap.createBitmap(bmp,0,0,
bmp.getWidth(),bmp.getHeight(),matrix,true);
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
saveBitmap(bmp,format.parse(new Date())+".JPEG");
Public void saveBitmap(Bitmap bitmap, String bitName){
String fileN
if(Build.BRAND .equals("Xiaomi") ){
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitN
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitN
file = new File(fileName);
if(file.exists()){
file.delete();
FileOutputStream out;
out = new FileOutputStream(file);
if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))
out.flush();
out.close();
MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
以上就是保存图片到相册的方式,代码写在Activity类中,而我们只要稍微封装一下这些代码到你的ImageUtil 或者 FileUtil那样类里面,你就可以方便地运用到你的项目中了,这里我就不封装了。
【系统相册】Android 保存图片到系统相册
Android 保存bitmap到相册
Android图片保存到本地,并再从本地获取图片
保存图片到本地并在相册中显示
效率开发之图片保存到图库
Android中保存图片到本地功能实现
android保存图片到本地并可以在相册中显示出来
Android下载网络图片并保存在本地相册
android将下载的图片显示到媒体相册中
android7.1 保存图片到系统图库
没有更多推荐了,专注移动互联网开发,注重实战,是软件开发的一柄利剑
解决Android拍照保存在系统相册不显示的问题
可能大家都知道我们保存相册到Android手机的时候,然后去打开系统图库找不到我们想要的那张图片,那是因为我们插入的图片还没有更新的缘故,先讲解下插入系统图库的方法吧,很简单,一句代码就能实现MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");通过上面的那句代码就能插入到系统图库,这时候有一个问题,就是我们不能指定插入照片的名字,而是系统给了我们一个当前时间的毫秒数为名字,有一个问题郁闷了很久,我还是先把insertImage的源码贴出来吧 /**
* 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 final String insertImage(ContentResolver cr, Bitmap source,
String title, String description) {
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DESCRIPTION, description);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
String stringUrl =
/* value to be returned */
url = cr.insert(EXTERNAL_CONTENT_URI, values);
if (source != null) {
OutputStream imageOut = cr.openOutputStream(url);
source.compress(Bitmap.CompressFormat.JPEG, 50, imageOut);
} finally {
imageOut.close();
long id = ContentUris.parseId(url);
// Wait until MINI_KIND thumbnail is generated.
Bitmap miniThumb = Images.Thumbnails.getThumbnail(cr, id,
Images.Thumbnails.MINI_KIND, null);
// This is for backward compatibility.
Bitmap microThumb = StoreThumbnail(cr, miniThumb, id, 50F, 50F,
Images.Thumbnails.MICRO_KIND);
Log.e(TAG, "Failed to create thumbnail, removing original");
cr.delete(url, null, null);
} catch (Exception e) {
Log.e(TAG, "Failed to insert image", e);
if (url != null) {
cr.delete(url, null, null);
if (url != null) {
stringUrl = url.toString();
return stringU
}上面方法里面有一个title,我刚以为是可以设置图片的名字,设置一下,原来不是,郁闷,哪位高手知道title这个字段是干嘛的,告诉下小弟,不胜感激!当然Android还提供了一个插入系统相册的方法,可以指定保存图片的名字,我把源码贴出来吧
* Insert an image and create a thumbnail for it.
* @param cr The content resolver to use
* @param imagePath The path to the image to insert
* @param name The name of the image
* @param description The description of the image
* @return The URL to the newly created image
* @throws FileNotFoundException
public static final String insertImage(ContentResolver cr, String imagePath,
String name, String description) throws FileNotFoundException {
// Check if file exists with a FileInputStream
FileInputStream stream = new FileInputStream(imagePath);
Bitmap bm = BitmapFactory.decodeFile(imagePath);
String ret = insertImage(cr, bm, name, description);
bm.recycle();
} finally {
stream.close();
} catch (IOException e) {
}啊啊,贴完源码我才发现,这个方法调用了第一个方法,这个name就是上面方法的title,晕死,这下更加郁闷了,反正我设置title无效果,求高手为小弟解答,先不管了,我们继续往下说上面那段代码插入到系统相册之后还需要发条广播sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
上面那条广播是扫描整个sd卡的广播,如果你sd卡里面东西很多会扫描很久,在扫描当中我们是不能访问sd卡,所以这样子用户体现很不好,用过微信的朋友都知道,微信保存图片到系统相册并没有扫描整个SD卡,所以我们用到下面的方法Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File("/sdcard/image.jpg"));
intent.setData(uri);
mContext.sendBroadcast(intent);
或者用MediaScannerConnectionfinal MediaScannerConnection msc = new MediaScannerConnection(mContext, new MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
msc.scanFile("/sdcard/image.jpg", "image/jpeg");
public void onScanCompleted(String path, Uri uri) {
Log.v(TAG, "scan completed");
msc.disconnect();
也行你会问我,怎么获取到我们刚刚插入的图片的路径?呵呵,这个自有方法获取,insertImage(ContentResolver cr, Bitmap source,String title, String description),这个方法给我们返回的就是插入图片的Uri,我们根据这个Uri就能获取到图片的绝对路径private
String getFilePathByContentResolver(Context context, Uri uri) {
if (null == uri) {
Cursor c = context.getContentResolver().query(uri, null, null, null, null);
String filePath
if (null == c) {
throw new IllegalArgumentException(
"Query on " + uri + " returns null result.");
if ((c.getCount() != 1) || !c.moveToFirst()) {
filePath = c.getString(
c.getColumnIndexOrThrow(MediaColumns.DATA));
} finally {
c.close();
return fileP
}根据上面的那个方法获取到的就是图片的绝对路径,这样子我们就不用发送扫描整个SD卡的广播了,呵呵,写到这里就算是写完了,写的很乱,希望大家将就的看下,希望对你有帮助!
【Android】调用MediaStore.Images.Media.insertImage保存图片时生成两张图片的问题
Android 保存bitmap到相册
Android 保存图片到系统及相关问题的解决方案
图片压缩展示 防止使用MediaStore.Images.Media.getBitmap造成的OOM异常
Android开发拍照后相册不显示的问题
拍照后保存到手机里,在相册找不到
使用系统相机拍摄照片保存到本地并在系统相册中显示
android拍照与相册选择照片并保存本地
Android 保存图片到手机相册
android如何将生成的图片保存至手机相册并显示出来
没有更多推荐了,||||||||||||||||||
查看: 6144|回复: 7
在线时间58 小时经验值277 最后登录注册时间帖子阅读权限50UID3929265
大学专科, 积分 277, 距离下一级还需 123 积分
该用户从未签到
G币485 最后登录注册时间
大概两个月前出的这个问题。。用着也很烦 每次给朋友发图还得用截图截下来再发,可是系统相册找不到那些图 但我的文件夹里面翻的到 而且用快图浏览可以看那些保存的图片。可大部分软件发图片都是根据系统相册的图片 无法通过快图浏览来选啊。。怎么破
在线时间23 小时经验值935 最后登录注册时间帖子阅读权限70UID
学士, 积分 935, 距离下一级还需 165 积分
TA的每日心情开心 11:40签到天数: 376 天[LV.9]以坛为家II
G币1083 最后登录注册时间
我也遇到过,你把图片的格式改一下试试,jpg改jpeg或改成别的再改回去就行
在线时间58 小时经验值277 最后登录注册时间帖子阅读权限50UID3929265
大学专科, 积分 277, 距离下一级还需 123 积分
该用户从未签到
G币485 最后登录注册时间
gjl31212 发表于
我也遇到过,你把图片的格式改一下试试,jpg改jpeg或改成别的再改回去就行
这么麻烦?我那么多微博 浏览器存的图不可能一张张改啊
在线时间1312 小时经验值21155 最后登录注册时间帖子阅读权限153UID3055769
TA的每日心情慵懒 11:16签到天数: 784 天[LV.10]以坛为家III
G币102659 最后登录注册时间
所有软件发图片都会弹出手机上的图片程序让你选,你手机只弹出系统图库说明你以前选择过系统图库为默认程序,取消默认程序重新选择
现用ROM:G2 D802 Remix 6.0.1_R52
曾用ROM:N多
在线时间58 小时经验值277 最后登录注册时间帖子阅读权限50UID3929265
大学专科, 积分 277, 距离下一级还需 123 积分
该用户从未签到
G币485 最后登录注册时间
tomochan 发表于
所有软件发图片都会弹出手机上的图片程序让你选,你手机只弹出系统图库说明你以前选择过系统图库为默认程序 ...
怎么设置啊
在线时间0 小时经验值2 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 2, 距离下一级还需 13 积分
该用户从未签到
G币0 最后登录注册时间
tomochan 发表于
所有软件发图片都会弹出手机上的图片程序让你选,你手机只弹出系统图库说明你以前选择过系统图库为默认程序 ...
在线时间0 小时经验值2 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 2, 距离下一级还需 13 积分
该用户从未签到
G币0 最后登录注册时间
我情况跟你一模一样哭哭
浏览过的版块
Powered by为什么手机相册里只能拍摄照片才会显示出来,而在微博里和微信里保存图片而相册里却没有显示。_百度知道
为什么手机相册里只能拍摄照片才会显示出来,而在微博里和微信里保存图片而相册里却没有显示。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
浮生缘梦知道合伙人
采纳数:33
获赞数:54
这个在你相册里面有相关设置。可以选择你需要显示的相册文件夹,同样也可以屏蔽不需要显示的文件夹
相册里面不能设置。
图库,gallery这种的,显示一系列的
我这个跟你那个不一样。
手机品牌不一样,不过都是在图库这个地方设置的
我这个是vivo手机。
这个貌似是vivo的通病了,只能通过访问文件夹查看这些图片
sb知道合伙人
采纳数:50
获赞数:131
擅长:暂未定制
需要点中照片选择保存图片
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。手机保存图片 相册里为什么看不到 文件管理里面却能看到?_百度知道
手机保存图片 相册里为什么看不到 文件管理里面却能看到?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
逍遥笔记知道合伙人
获赞数:96
擅长:暂未定制
对安卓手机而言,用文件管理软件把图片“移动”到内存中DCIM的文件夹中就能在相册查看,再不懂问我
有个大妖怪知道合伙人
有个大妖怪
采纳数:23
获赞数:64
擅长:暂未定制
保存的位置不对
热心网友知道合伙人
寻窗的人知道合伙人
采纳数:658
获赞数:2418
擅长:暂未定制
应该是存储路径错了
热心网友知道合伙人
你有可能保存错了
其他10条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 小影视频怎么保存相册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信