如何调用系统相机拍摄图片保存在指定文件夹

fire_fire_fire 2011-08-26 10:14:45
如题,我想实现用户点击按钮调用相机,拍照后将刚拍的照片,按指定的名称保存在指定的文件夹中,请问要怎样实现啊?我自己写的代码如下,就是不能保存在我指定的文件夹中,而是以默认名称保存在默认的文件夹下,求解。
在线等,有答案马上结贴,谢谢了!

//拍照获取图片,点击拍照调用此方法
protected void doTakePhoto() {
try {
PHOTO_DIR.mkdirs();// 创建照片的存储目录
mCurrentPhotoFile = new File(PHOTO_DIR, getPhotoFileName());// 给新照的照片文件命名
final Intent intent = getTakePickIntent(mCurrentPhotoFile);
startActivityForResult(intent, CAMERA_WITH_DATA);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "e=" + e, Toast.LENGTH_LONG).show();
}
}

public static Intent getTakePickIntent(File f) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
Uri u = Uri.fromFile(f);
intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
return intent;
}
//用当前时间给取得的图片命名
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat(
"'IMG'_yyyy-MM-dd_HH:mm:ss");
return dateFormat.format(date) + ".jpg";
}
...全文
1764 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
追梦星尘 2013-11-27
  • 打赏
  • 举报
回复
默认目录下的如何删,不同相机默认保存的名称可能都不一样吧?还有路径 ?如何获取 然后删除??
Ada168855 2013-06-16
  • 打赏
  • 举报
回复
奇怪,CSDN怎么结帖了还可以回复 ?
Ada168855 2013-06-16
  • 打赏
  • 举报
回复
引用 16 楼 liudi5649385 的回复:
不知道算不算bug,还是Rom问题,就算指定了文件夹,也会在DCIM中另存一份,这个问题很是纠结。。。。
这个不算bug的
ladyweiwei1234 2012-11-27
  • 打赏
  • 举报
回复
感谢楼主,解决了大问题
yezhilang314 2012-07-18
  • 打赏
  • 举报
回复
我试了一下,好像是你的命名那边不规范,试着吧生成的名称里面的-和:全部去掉,我的就可以了
yanmi1982 2012-06-06
  • 打赏
  • 举报
回复
我下载了跟本看不懂哇,那些代码怎么用?要放手机吗?什么是代码
fire_fire_fire 2012-05-25
  • 打赏
  • 举报
回复
是的,手机拍照默认会在dcim文件夹下存一份,但是你可以把它删掉啊
liudi5649385 2012-05-25
  • 打赏
  • 举报
回复
不知道算不算bug,还是Rom问题,就算指定了文件夹,也会在DCIM中另存一份,这个问题很是纠结。。。。
fire_fire_fire 2012-05-21
  • 打赏
  • 举报
回复
sfhjdq 2012-05-12
  • 打赏
  • 举报
回复
楼主求代码。我在为这个存储的问题烦恼。邮箱397227822@qq.com,谢谢咯。
lenovoliulin 2012-05-02
  • 打赏
  • 举报
回复
求代码。邮箱yufengliu163@163.com
RookieDemo 2012-03-14
  • 打赏
  • 举报
回复
麻烦给我看下源码
tllen3 2012-02-22
  • 打赏
  • 举报
回复
你是调用系统自带的相机!他会以默认路径保存!重写拍摄方法就可以了!我试过!
chenxuan5618 2011-12-29
  • 打赏
  • 举报
回复
LZ能给个源码吗,我初学 搞不定 邮箱573357189@qq.com
cai_weizhuang 2011-12-19
  • 打赏
  • 举报
回复
总是保存在默认目录下,这个问题是怎么解决的啊。我也遇到了,麻烦发下代码啊
zhlong0889 2011-12-03
  • 打赏
  • 举报
回复
请问搂主,你是如何解决的?我遇到同样的问题。盼复!
hedge31 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fff32165 的回复:]
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File path = new File(mstrPath);
if(!path.exists())
path.mkdirs();
mstrFileName = Global.GetTime2() + ".jpg";
mstrFilePath = ……
[/Quote]
很受用。。。在验证
wenzheng38 2011-08-27
  • 打赏
  • 举报
回复
上面的代码只是创建了路径跟文件名,但是并没有写数据呀。。。
六百万 2011-08-27
  • 打赏
  • 举报
回复
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File path = new File(mstrPath);
if(!path.exists())
path.mkdirs();
mstrFileName = Global.GetTime2() + ".jpg";
mstrFilePath = mstrPath + "/" + mstrFileName;
Log.e(Global.TAG, mstrFilePath);
File file = new File(mstrFilePath);
Uri uri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 1);

哈哈,随便回个,方便你结贴哈
fire_fire_fire 2011-08-26
  • 打赏
  • 举报
回复
自己顶一个,有谁能帮帮忙吗?给个例子或代码啊,谢谢了
加载更多回复(3)
Current release version: 3.00 (Feb 2 2015) Source tarball jhead-3.00.tar.gz (69 k) Pre-built Windows executable jhead.exe (166 k) Pre-built Linux executable (built on Centos) jhead (77 k) Pre-built OS-X Intel executable (version 2.97) jhead (24 k) ----------------- 简介 一个现成更改照片时间的程式--jhead,由网页中,releases表里下载110k的十分好用。 下载jhead时,记得把jhead程序存放在要更改的照片文件夹里,不然无法使用。 它的强大在于它 一、提供了其他工具所不能企及的功能 二、强大的批处理能力 唯一的问题是:jhead不是个window程式,它是个DOS程式,许多用window的人,对DOS并不熟,因此,说明jhead使用法如下: jhead这个DOS程式必需在DOS下执行,如何在windows中启动DOS? 以windowsXP为例: 开始——运行 在开启处键入cmd C:\DocumentsandSettings\user。这即是我们的电脑硬碟(简化来说。其实只是硬碟的一部份)。试着click这一行最右边,并键入dir。 dir是DOS的command,意思是--显示目录,此时就会看到一串有的字,其中有个桌面,试着键入---cd桌面。 这时出现\DocumentsandSettings\user\桌面,表示已进入桌面这个目录,cd是change directory(改变目录)的意思,试着键入---cd要更改的照片文件夹名称。 这时出现\DocumentsandSettings\user\桌面\你要更改的照片文件夹名称。表示已进入你想更改的目录。接着键入jhead参数 据说该工具最早是在linux环境下开发的,现已被移植到多个平台,包括windows。 但,目前为止并没有GUI,也就是图形外壳,所以理解并使用该工具前你必须了解一些简单的命令行知识 跟所有的命令行工具一样,它的使用方法为:jhead参数列表jpg文件列表 比如: jhead-se1jpg处理单个文件 jhead-se2009_[0-9]jpg处理指定的多个文件 jhead-se*jpg处理所有文件 另外,你甚至可以用**通配符来代替子目录,从而实现对指定目录的遍历!包括子目录的子目录。如: jhead-sec:\tmp\**\*jpg 当然有些参数也允许你联合使用。比如: jhead-se-q1jpg2jpg3jpg 我们举几个例子(jhead如何使用)(命令和参数、文件夹、文件之间必须空格): (一)jhead-da2009:01:01-2008:01:01*jpg 把当前目录下的所有拍摄日期为2008/01/01的照片更改时间为2009/01/01。这在相机日期设置有误时非常有用。(更改照片拍摄日期) (二)jhead-ds2009*jpg 把当前目录下的所有jpg文件的日期年份更改为2009年,保持日期的其他部分(月、日及时间)不变! (三)jhead-nf%Y_%m%d_i*jpg 把当前目录下的所有jpg文件的文件名更改为:年4位_月2位日2位_4位序号jpg如:2009_1201_0001jpg (四)jhead-seld_picjpg>atxt 有时候你可能需要把照片的exif信息转入文体保存,你可以直接重定向输出就可以了 (五)jhead-st"bak\&i"*jpg 把当前目录下的所有文件的缩略图复制保存到bak目录下并与原文件名同名。 (六)jhead-te01jpg02jpg 单个文件导入,把01jpg的信息导入到02jpg,覆盖原来的。 jhead-te"bak\&i"*jpg 批量导入,把bak目录下的jpg文件信息按文件名一一对应的导入当前目录下的jpg文件!引号不省略!! 实例一下吧 jhead命令(参数)大全 -V(大写的V)显示jhead的版本 -h获得帮助 -autorot根据exif中记录的水平方向信息转动照片 -norot清除exif中记录的水平方向信息 -v(小写的v)详细的exif信息显示 -exifmap显示头信息,总之跟v不一样 -se简化显示 -c精简显示(比-se更简单) -dc删除jpg信息中的备注 -de完全删除exif信息 -du删除非原始exif信息,例如Photoshop之类编辑后修改exif留下的信息 -purejpg删除所有jpg文件非必须信息相当于-de-dc-du的集合,文件将减小数k -mkexif创建新的最小exif信息(覆盖原有的的exif信息),不明白这有什么用 -di删除IPTC(Photoshop格式兼容)信息 -dx删除XMP(photoshop文件信息) -te从其他jpg文件导入exif信息到当前文件 -dc删除jpg信息中的备注 -ce使用系统默认编辑器编辑备注。运行时会自动打开文本编辑器,录完信息,保存并关闭后,信息会自动被写入备注 -cs导出备注到文本文件。如:jhead-cs1txt1jpg -ci从文体文件导入备注。如:jhead-ci1txt1jpg -clstring直接输入备注。如:jhead–cl我爱无常版主1jpg -dt删除exif中的缩略图此缩略图一般240x160象素,10k大小 -st[name]将exif中的缩略图复制为另一个jpg文件 -rt[name]用另一个jpg文件替换exif中的缩略图 -rgt[size]刷新exif缩略图,其中[size]为缩略图的最大边长 -ft将jpg文件的“修改时间”修改为exif信息中记录的拍摄时间 -dsft把照片exif信息时间设置为文件修改时间 -da[date1]-[date2]把拍摄日期为data2的照片日期修正为data1;date格式为yyyy:mm:dd或yyyy:mm:dd+hh:mm或yyyy:mm:dd+hh:mm:ss -ts[time]直接修改exif中的时间,格式为yyyy:mm:dd-hh:mm:ss -ds[date]直接修改exif中的日期,格式为yyyy:mm:dd或yyyy:mm或yyyy -ta[+|-]h[:mm[:ss]]修正时差,根据时区确定,例如+1:00或者-1:00 -n[format-string]将照片文件名修改为exif信息中记录的“数字化时间”,保留原文件名;如果exif数字化时间不可用,则将文件名修改为文件的“修改时间” -nf[format-string]与"-n"相同功能相同,不保留原文件名 format-string格式说明 %d日(01-31) %H小时(00-23) %j一年中的第几天(001-366) %m月(01-12) %M分钟(00-59) %S秒(00-59) %U一年中的第几周(00-53) %w星期几(0-6,周日为0) %y两位数纪年(00-99) %Y四位数纪年 %i添加数字序号,也可以指定位数。如:i(生成4位序号,不足的高位补零) %f原文件名 -q不显示程序运行信息,和其他参数一起使用。这在编写批处理脚本时非常有用 -cmdcommand调用其他程序,如:jhead-cmd"mogrify-qlity80&i"*jpg -exonly不处理没有exif信息的文件,要和其他参数一起使用 -a修改不同扩展名的同名文件名。拍摄的avi短片exif信息存储在同名thm文件中,可用此指令给avi文件更名一般与-n共同使用

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧