图片裁剪

Android大图片裁剪终极解决方案(上:原理分析)

一个人想着一个人 提交于 2019-11-28 13:43:41
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已。 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏洞百出。 当时我用大众化的解决方案,暂时性的做了一个拍照截图的功能,似乎看起来很不错。可是问题随之而来,我用的是小米手机,在别的手机上都运行正常,在小米这里却总是碰钉子。虽然我是个理性的米粉,但是也暗地里把小米的工程师问候了个遍。真是惭愧! 翻文档也找不出个答案来,我一直对 com.android.camera.action.CROP 持有大大的疑问,它是从哪里来,它能干什么,它接收处理什么类型的数据?Google对此却讳莫如深,在官方文档中只有Intent中有只言片语言及,却不甚详尽。 随着项目的驱动,我不能抱着不了解原理就不往前走的心态,唯一要做的,是解决问题。最后在德问上找到一条解决方案,说是哪怕是大米也没问题。当时乐呵呵将代码改了改,确实在所有的手机上跑起来了,一时如释重负,对这个的疑问也抛诸脑后了。 直到月前,BOSS要求将拍照上传到服务器的图片分辨率加倍。OK,加倍简单

Android大图片裁剪终极解决方案(中:从相册截图)

戏子无情 提交于 2019-11-27 09:03:28
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/86853 在这篇博客中,我将向大家展示如何从相册截图。 上一篇博客中,我就拍照截图这一需求进行了详细的分析,试图让大家了解Android本身的限制,以及我们应当采取的实现方案。 根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有 使用Bitmap并返回数据 使用Uri不返回数据 前面我们了解到,使用Bitmap有可能会导致图片过大,而不能返回实际大小的图片,我将采用大图Uri,小图Bitmap的数据存储方式。 我们将要使用到URI来保存拍照后的图片: private static final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";//temp file Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap 不难知道,我们从相册选取图片的Action为Intent.ACTION_GET_CONTENT。 根据我们上一篇博客的分析,我准备好了两个实例的Intent。 一、从相册截大图: Intent intent = new

Android大图片裁剪终极解决方案(下:拍照截图)

随声附和 提交于 2019-11-27 09:03:13
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/86865 上一篇博客 中,我们学习到了如何使用Android相册截图。在这篇博客中,我将向大家展示如何拍照截图。 拍照截图有点儿特殊,要知道,现在的Android智能手机的摄像头都是几百万的像素,拍出来的图片都是非常大的。因此,我们不能像对待相册截图一样使用Bitmap小图,无论大图小图都统一使用Uri进行操作。 一、首先准备好需要使用到的Uri: private static final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";//temp file Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap 二、使用MediaStore.ACTION_IMAGE_CAPTURE可以轻松调用Camera程序进行拍照: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture intent.putExtra(MediaStore.EXTRA