当前位置: 首页 > 面试题库 >

在Android中使用相机捕获图像并使用自定义名称保存

曾洲
2023-03-14
问题内容

我已经创建了一个将捕获图片并保存在sdcard文件夹中的android应用程序,现在我想使用自定义名称保存图片。

import java.io.ByteArrayOutputStream;
import android.view.Menu;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private static final int CAMERA_REQUEST = 1888;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.imageView = (ImageView) this.findViewById(R.id.imageView1);
        Button photoButton = (Button) this.findViewById(R.id.button1);

        photoButton.setOnClickListener(new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

                Intent cameraIntent = new Intent(
                        android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI.getPath());
                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, "new-photo-name.jpg");
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            }
        });
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) 
        {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            imageView.setImageBitmap(photo);
            MediaStore.Images.Media.insertImage(getContentResolver(), photo,
                    null, null);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            photo.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
            byte[] b = baos.toByteArray();

        }
    }

这是我用来捕获图像并将其保存在sd卡文件夹中的代码,请帮助我以特定名称保存图像,例如:android.jpeg


问题答案:
File outFile = new File(Environment.getExternalStorageDirectory(), "myname.jpeg");
FileOutputStream fos = new FileOutputStream(outFile);
photo.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
fos.flush();
fos.close();

您还需要在Android清单中添加权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

该代码段将使用名称保存photo内部内容/sdcard``"myname.jpeg"



 类似资料:
  • 问题内容: 我正在制作一个使用AVFoundation拍照的应用程序,我想将它们保存到自定义相册中,然后查询并显示在我的应用程序中。(除非用户希望,否则我不希望它们出现在一般的照片胶卷中)我真的找不到任何东西可以显示在Swift中如何做到这一点……或根本没有。我应该有其他方法吗? 我在SO上找到了这个示例,但是对我来说这没有意义,我无法使其正常工作。 任何帮助/说明都将非常棒! 问题答案: 这是我

  • 问题内容: 我有一个.bmp图像,我想将其用作GUI的光标。该QCursor文件表明,这是可能的(“要创建自己的位图光标,要么使用QCursor构造函数需要一个位图和一个口罩或需要一个像素图作为参数构造函数”),但我似乎无法得到它在我收到’TypeError:QCursor():当我尝试将建议的模块与位图一起使用时,参数1具有意外的类型’str’时起作用。应该怎么做? 下面是产生上述错误的代码。该

  • 我创建了自定义相机活动,但拍摄的图像方向错误。当我在纵向模式下拍摄图像并将其旋转90度后。它处于原始位置,但在横向模式下以错误方向拍摄图像。 相机方向在纵向模式下捕获图像时 用于解决相机预览问题。 检查位图方向。

  • 我正在尝试使用html2canvas将div捕获到图像中。我有一个带滚动条的div。我想把这个div元素转换成image。当运行html2canvas时,它只捕获屏幕的可见部分,截断从滚动中隐藏的所有内容。设置“高度、宽度”属性没有影响。我使用的是html2canvas版本0.4。1. 感谢帮助。

  • 我正在尝试使用来保存图像,但它总是以这个名称保存文件1637955326427.jpg并且文件的大小0 B。 <代码>列表。获取(0)。getDocFile()返回一个文档文件,我也在API 28上测试了这个,谢谢 请注意,此图像已存在于外部存储器中,只需复制即可。 编辑:我删除此代码是重复的。我真的很抱歉。文件工作正常,但盗用了错误的名称。

  • 在我的网页上,我的pdf设置如下: 其中URL是使用javascipt从如下blob创建的: pdf会显示出来,但当我单击右下角的保存按钮(使用chrome)时,我会得到一个预定义的名称(可能是用javascript创建的URL名称)。。。 我怎样才能改变那个名字?