摄像头捕获的ImageView大小

时间:2012-08-16 20:35:08

标签: android

我按照另一个StackOverflow教程,您可以从相机中捕获位图并将其设置为图像视图。我遇到的问题是返回的图片非常小,并没有填满屏幕的其余部分。在我的XML中,我执行以下操作...

<ImageView 
     android:id="@+id/imgview" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

如果我更改为“fill_parent”,我会得到一个更大的图像,但我现在的问题是如何获取实际尺寸图像并将其放在可滚动(在x和y方向)视图容器中。 / p>

谢谢!

BTW,这是从相机中捕获位图的代码......

public class MainActivity extends Activity implements OnClickListener
{
private ImageView imageView;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("matt","1");

    Button b = (Button)this.findViewById(R.id.btn);
    imageView = (ImageView)this.findViewById(R.id.imgview);

    b.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public void onClick(View v)
{
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent,1888);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode == 1888)
    {
        Log.d("matt", "3.a");
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        Log.d("matt", "3.b");
        imageView.setImageBitmap(photo);
        Log.d("matt", "3.c");
    }
}

2 个答案:

答案 0 :(得分:1)

如果您需要捕获图像的尺寸,则可以使用:

int height = photo.getHeight();
int width = photo.getWidth();

否则,如果您想了解所拍摄图像的大小(以兆字节为单位),请参阅我对此问题的回答:https://stackoverflow.com/a/11846455/1512836

[编辑] - 请检查此项以滚动图片视图:Images in ScrollView in android

答案 1 :(得分:1)

调用者可以传递额外的EXTRA_OUTPUT来控制该图像的写入位置。如果EXTRA_OUTPUT不存在,则在额外字段中返回小尺寸图像作为Bitmap对象。这对于只需要小图像的应用程序非常有用。如果存在EXTRA_OUTPUT,则将将全尺寸图像写入EXTRA_OUTPUT的Uri值。