android - 拍摄给定尺寸的照片 Android

标签 android image resize android-camera

我正在开发一个拍摄照片并将其保存在 Android/data/package/files 中的应用程序。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前,我称新 Intent 作为额外的输出路径传递。是否也可以传递所需的大小,或者可以在保存之前拥有位图?

public void takePicture(View view){
    Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File f = new File(getPath(nameEdit.getText().toString()));
    path = f.getAbsolutePath();
    pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
    if (pictureIntent.resolveActivity(getPackageManager())!=null){
        startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE);
    }
}

最佳答案

Is possible to pass also the size wanted

没有。

is possible to have the bitmap before saving it?

不是真的。您可以编写自己的 ContentProvider 并为此使用 Uri,而不是文件。当相机应用程序尝试保存内容时,您会先在内存中获取该信息。但是,您随后会因 OutOfMemoryError 而崩溃,因为您很可能没有足够的堆空间来保存全分辨率照片。

您可以使用 BitmapFactory 并在 BitmapFactory.Options 中设置了 inSampleSize,以便在相机写入文件后读入该文件,保存您认为合适的调整大小的图像,然后删除全分辨率图像。或者,跳过 EXTRA_OUTPUT,您将获得返回给您的缩略图,这是通过对传递的 Intent 调用 getExtra("data") 获得的进入 onHandleIntent()

关于android - 拍摄给定尺寸的照片 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516505/

相关文章:

javascript - html 5 计数器的 drop 功能

android - 如何将分隔符放在 Android ListView 中的特定位置

android - 如何在 Android 中为按钮启用音效

android - 如何使用 Android Google map 应用程序的双击标记打开新 Activity ?

android - 处理程序线程 : Only one Looper may be created per thread

image - 可以将带有 alpha channel 的图像转换为不带 alpha channel 的图像吗?

javascript - 使用 Node.js 时 ImageMagick 裁剪尺寸不正确

javascript - 如何在用户放大和缩小页面时保持 <div> 的大小不变?

Android 9Patch 在 photoshop 中调整大小

c++ - 在 C++ 中,哪个是最昂贵的,删除最后一个元素或调整 vector 的大小?