我正在用我的原生安卓手机相机拍照!但我想要的是调整捕获的照片的大小,然后保存。
我一直在尝试的是:
public void takePhoto() {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File folder = new File(Environment.getExternalStorageDirectory() + "/PhotoBox");
if (!folder.exists()) {
folder.mkdir();
}
final Calendar c = Calendar.getInstance();
String new_Date = c.get(Calendar.DAY_OF_MONTH) + "-" + ((c.get(Calendar.MONTH)) + 1) + "-" + c.get(Calendar.YEAR) + " " + c.get(Calendar.HOUR) + "-" + c.get(Calendar.MINUTE) + "-" + c.get(Calendar.SECOND);
path = String.format(Environment.getExternalStorageDirectory() + "/" + "PhotoBox" + "/%s.png", "Product(" + new_Date + ")");
File photo = new File(path);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
xPath = path;
startActivityForResult(intent, 2);
}
我知道拍摄照片后我的图像正在保存。我可以通过创建缩放的位图来调整图像大小!但是在相机意图的情况下,我得到的只是捕获图像的 Uri,然后我保存了它。
但我想知道
如何从ANDROID相机意图和 然后保存 ?
您正在使用EXTRA_OUTPUT
.这将要求相机应用将图像保存到该位置。在您的情况下,您将其指向一个文件,因此相机应用程序会将图像保存到该文件。它将在将控制权返回给您之前执行此操作,因此您无法在此之前调整图像大小。
您的选择是:
-
之后只需调整图像大小即可。
-
从
Intent
中删除EXTRA_OUTPUT
。然后,相机应用程序应该通过onActivityResult()
中交给您的Intent
中的"data"
为您提供缩略图大小的图像,而不是将图像保存到文件中。此缩略图可能根本不需要调整大小;即使有,您也可以在将其保存到某个位置之前调整其大小。 -
实现一个将从相机应用接收图像的
ContentProvider
,然后在自己保存图像之前调整其大小。这不太可能起作用,因为您不太可能有足够的堆空间来处理全尺寸图像。