相机 API - 图像太小

Posted

技术标签:

【中文标题】相机 API - 图像太小【英文标题】:Camera API - Image too small 【发布时间】:2014-01-19 01:58:00 【问题描述】:

我正在尝试使用相机 API 拍摄照片以填充到图像视图中。现在的问题是从相机拍摄的图像太小而无法填充图像视图。

这是我用来瞄准相机并将图像填充到图像视图中的代码。

btn_takeImage = (Button) findViewById(R.id.btn_takeImage);
        btn_takeImage.setOnClickListener(new OnClickListener()
        
            @Override
            public void onClick(View v)
            
                Intent camera_intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(camera_intent, CAMERA_PIC_REQUEST);
            
        );
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode)
        
            case 0:
                if (resultCode == RESULT_OK)
                
                    Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                    img_backgroundImage.setImageBitmap(thumbnail);
                
        
    

这是我的xml

<ImageView
            android:id="@+id/img_additionalImage"
            android:layout_
            android:layout_
            android:contentDescription="@null"
            android:src="@drawable/ic_launcher" />

我的相机意图有什么问题还是我的 xml 有问题?

【问题讨论】:

【参考方案1】:

这是因为意图数据总是返回捕获图像的缩略图而不是实际图像。

要获得实际图像,您必须执行以下一些棘手的操作。

查看答案here

【讨论】:

我试了一下,确实奏效了。但是,即使我以纵向拍摄照片,它也只允许我拍摄照片并将图像推送到横向。拍了几次照片测试也出现outofmemoryerror异常。 这是安卓漏洞。对于方向,如果检索到的位图大于宽度,则必须检查高度,然后将图像旋转 270 度,否则保持原样。 当您使用 ACTION_IMAGE_CAPTURE Intent 时,图像可能会很大,并且在解码为位图时会导致内存不足。您可以使用 BitmapFactory 来减少内存需求,但最终如果您自己控制相机可能会更好。

以上是关于相机 API - 图像太小的主要内容,如果未能解决你的问题,请参考以下文章

android裁剪图像太小

人脸 API Python SDK“图像尺寸太小”(PersonGroupPerson add_face_from_stream)

是否可以使用相机 2 API 捕获没有纹理视图的图像?

如何使用自定义相机 API 制作圆形框架布局并捕获圆形图像?

使用 Android L 和 Camera2 API 处理相机预览图像数据

这是Android中用于图像处理的最佳Camera API