gpt4 book ai didi

相机拍摄的安卓照片尺寸非常小

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:27 26 4
gpt4 key购买 nike

我正在尝试从相机中捕捉图像,将其压缩,然后将其存储到 SD 卡中。如果我直接使用下面的代码将它直接保存到 SD 卡,我会得到完整的图像。但是,如果我尝试在系统中加载图像,我会得到一个超小的图像尺寸,例如 320 x 240,而不是完整的 5 mp 图像。

        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
startActivityForResult(intent, CAMERA_PIC_REQUEST);

getImageURI() 在哪里

    private Uri getImageUri() {
// Store image in dcim
file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.jpg");
imgUri = Uri.fromFile(file);
file.deleteOnExit();
Log.e("syS","file is at "+imgUri);
return imgUri;
}

现在,当我尝试将它保存到内部存储器时,我使用以下代码获取小图像:

    public void imageFromCamera() { //code to retrieve image
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}

在我的 startActivitForResult 中我有以下内容:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
Bitmap bm = (Bitmap) data.getExtras().get("data");
Log.e("sys", "width is "+bm.getWidth()); //im gettting an extremely small width here

OutputStream outStream = null;
file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.png");
try {
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 70, outStream);
outStream.flush();
outStream.close();

Log.i("Hub", "OK, Image Saved to SD");
Log.i("Hub", "height = "+ bm.getHeight() + ", width = " + bm.getWidth());

} catch (FileNotFoundException e) {

e.printStackTrace();
Log.i("Hub", "FileNotFoundException: "+ e.toString());

} catch (IOException e) {

e.printStackTrace();
Log.i("Hub", "IOException: "+ e.toString());
}



}

最佳答案

当您在没有 MediaStore.EXTRA_OUTPUT 的情况下调用相机 Intent 时,相机仅返回一个小缩略图,因为 Intent 包未设计为传递大内存块。来自 SDK 文档 for MediaStore :

可以发送的标准 Intent 操作让相机应用程序捕获图像并将其返回。调用者可以传递一个额外的 EXTRA_OUTPUT 来控制这个图像的写入位置。如果 EXTRA_OUTPUT 不存在,则在额外字段中返回一个小尺寸图像作为 Bitmap 对象。这对于只需要小图像的应用程序很有用。如果存在 EXTRA_OUTPUT,则全尺寸图像将写入 EXTRA_OUTPUT 的 Uri 值。

关于相机拍摄的安卓照片尺寸非常小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com