Android:从相机拍摄图像并裁剪

时间:2014-11-05 08:02:34

标签: android camera crop android-camera-intent image-compression

我会尽量简短,我正在为一家公司开发应用程序,我需要具备以下功能:

单击图像 - >弹出对话框 - >选择(拍摄新图像,选择现有图像) - >选择或拍摄图像后 - >使用1:1宽高比裁剪图像定量因此它变成了一个正方形。

我刚刚成功实现了这个功能,但之后我意识到图像质量急剧下降,经过一些研究(6小时)我意识到如果你没有通过一个目录保存图像的作物意图,它返回"缩略图"在我的情况下这几乎没用,这里有我提出的问题清单:

1-我无法指定保存图像的目录位置(我想将其保存到图库中,如果可能的话,使用我的应用名称创建一个新文件夹并保存到其中)

2-我设法得到质量好的裁剪图像,但当然它的大小很大,所以当我将它编码为Base64字符串并将其发送到服务器时需要花费大量时间,很想知道哪种方法是更好(压缩1​​0%,然后重新调整大小或仅重新调整大小或仅压缩它)

3-是否有某种教程处理这样的序列我可以阅读?

4-我意识到因为我从Open Camera Intent保存图像然后从Crop intent保存两次,我怎么能删除其中一个?

1 个答案:

答案 0 :(得分:1)

  1. 如果没有明确指定目标位置,那么获得缩略图就可以了,完整的图像仍然会写入磁盘。见 Android Camera : data intent returns null 。查看code sample上的“官方”developer.android.com以获取最佳做法。请注意,某些设备/ ROM上可能仍有毛刺,请参阅 capturing images with MediaStore.ACTION_IMAGE_CAPTURE intent in android 。实际上,当你使用Intent时,它最终可能会被最终用户安装的3 rd 派对相机应用程序完成,并且它们的行为可能是任意的。

  2. 调整大小不等于Compress。请更具体地说明您的主要问题。我不知道为什么你应该将你的图像基于64上传,但​​经验法则是将裁剪结果缩小到服务器端预期的尺寸,然后调整Jpeg压缩因子以实现预期的文件大小

  3. 您可以从Wikipedia开始。

  4. 如果您的应用具有相应的权限,则可以。见 Deleting a gallery image after camera intent photo taken

相关问题