我在Android活动中有以下代码,我试图用自定义文件名保存图像。
我试着从这篇文章的最上面的答案中复制代码:Android-拍摄照片并通过Intent用自定义名称保存到自定义目的地
我的代码如下:
//camera stuff
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
//folder stuff
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "QR_" + timeStamp + ".png");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
Log.d(LOG_TAG, "writing photo to: " + uriSavedImage.toString());
startActivityForResult(imageIntent, 1);
当我运行此活动时,它会在屏幕上显示一张图片,我必须轻触触摸板才能接受(这是在玻璃上运行的),它会在DDMS中打印以下内容:
writing photo to: file:///mnt/sdcard/MyImages/QR_20140106_181934.jpg
但是,当我通过DDMS在文件资源管理器中检查该目录时,它是空的。它成功地创建了目录MyImages,但没有在该目录中保存任何文件。
相反,它用我刚刚拍摄的图像创建了以下文件: /mnt/sdcard/DCIM/Camera/20140106_181935_635.jpg
因此,它捕获了正确的图像,但忽略了我告诉它保存图像的位置。知道我做错了什么吗?
查看该文件时,该文件可能未完全写入,因此请使用类似GDK文档中的FileWatcher
:
private static final int TAKE_PICTURE_REQUEST = 1;
private void takePicture() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE_REQUEST && resultCode == RESULT_OK) {
String picturePath = data.getStringExtra(
CameraManager.EXTRA_PICTURE_FILE_PATH);
processPictureWhenReady(picturePath);
}
super.onActivityResult(requestCode, resultCode, data);
}
private void processPictureWhenReady(final String picturePath) {
final File pictureFile = new File(picturePath);
if (pictureFile.exists()) {
// The picture is ready; process it.
} else {
// The file does not exist yet. Before starting the file observer, you
// can update your UI to let the user know that the application is
// waiting for the picture (for example, by displaying the thumbnail
// image and a progress indicator).
final File parentDirectory = pictureFile.getParentFile();
FileObserver observer = new FileObserver(parentDirectory.getPath()) {
// Protect against additional pending events after CLOSE_WRITE is
// handled.
private boolean isFileWritten;
@Override
public void onEvent(int event, String path) {
if (!isFileWritten) {
// For safety, make sure that the file that was created in
// the directory is actually the one that we're expecting.
File affectedFile = new File(parentDirectory, path);
isFileWritten = (event == FileObserver.CLOSE_WRITE
&& affectedFile.equals(pictureFile));
if (isFileWritten) {
stopWatching();
// Now that the file is ready, recursively call
// processPictureWhenReady again (on the UI thread).
runOnUiThread(new Runnable() {
@Override
public void run() {
processPictureWhenReady(picturePath);
}
});
}
}
}
};
observer.startWatching();
}
}
在相机意图返回时获得文件路径的最佳方法是什么。当然,我可以在启动意图之前将文件路径保存到成员变量,但这似乎不好,我应该从OnActivityResult中获得路径。 我已经试过了(从相机意图获取图像路径): 唯一不同的是,我在尝试内部存储pic时使用了INTERNAL_CONTENT_URI。如果我这样做,我会得到一个异常:
有人知道模拟器相机启动时是否有可能打开一些个人照片吗? 我有一个基于图像分析的应用程序,我想当我点击相机的按钮时,相机打开的不是默认的Android emulator运动图像。我希望它打开一些我设置为默认图像的图像。因此,当我选择拍照时,它将只显示该图像,当我拍照时,该图像将保存到gallery,而不是Android默认图像。
在我的应用程序中,我可以打开相机并拍照。图片以2448x3264像素的全尺寸存储在sd卡上。我如何在我的应用程序中配置它,以保存90x90像素而不是2448x3264像素的图片? 要打开相机并拍摄图像,我使用以下方法: 我希望s. o.能帮助我。我正在尝试将捕获的图像加载到一个小图像视图中,看起来像这样。提前感谢
问题内容: 我有一个可以制作图片并上传图片的应用。上载需要照片的文件路径,但无法获取。 这是我的代码: 请帮助我获取文件路径。 谢谢 问题答案: 发布到Twitter时,需要在发布请求中发送图片在设备上的实际路径。我发现很难找到实际的路径,而且经常会发现错误的路径。 为了解决这个问题,一旦有了a ,我就可以使用来获取。随后,我使用实例获取设备上的实际路径。 这是生产代码,并且经过了自然测试。;-)
我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机
我在后端使用Rails API,在前端使用ReactJS。我也使用载波在后端处理我的图像。我试图上传我的图像并将其发送到后端。使用简单的超文本标记语言上传器在前端捕获图像文件。 这是我的uploader.jsx 以上代码是此解决方案的精确副本。我使用formData和axios将数据推送到后端。但数据在数据库中存储为“nil”值。安慰log(formData)给出一个空哈希。 我在后端的控制器代码
我在这个问题上遇到了几个问题。我正在尝试选择运行Chrome的Android设备上的后置摄像头。 因此,在阅读之后: 然后,因为我用了三个。在这个应用程序中,我将这个ID绑定到Jerome Etienne三分机网络摄像头抓取(https://github.com/jeromeetienne/threex.webar): 然后我不得不修改3X。网络摄像头抓取以这种方式分类(我删除了不相关的部分):