Android自拍相机应用——图片的镜像翻转
Android系统相机在使用前置摄像头拍照的时候,最终会将拍下的画面做镜像翻转,来达到真实的视角效果,但由于Android手机大多将前置摄像头摆在左右两边(iPhone在靠中间的位置,效果会好很多),导致翻转后与拍照预览的画面还是会有较大的差别,所以我们这里就再做一次镜像将图片翻转回去。
图片镜像
public Bitmap convertBmp(Bitmap bmp) {int w = bmp.getWidth();int h = bmp.getHeight();Matrix matrix = new Matrix();matrix.postScale(-1, 1); // 镜像水平翻转Bitmap convertBmp = Bitmap.createBitmap(bmp, 0, 0, w, h, matrix, true);return convertBmp;}
图片的翻转主要用到变换矩阵中的缩放操作,x轴都乘-1,y轴保持不变。
图片保存
private void saveBitmap() {try {File outFile = new File(Utils.getRootPath(),System.currentTimeMillis() + ".jpg");outFile.createNewFile();FileOutputStream outStream = new FileOutputStream(outFile);mBitmap.compress(CompressFormat.JPEG, 100, outStream);outStream.close();} catch (IOException e) {}}
上面的方法会将一个bitmap保存为jpg的图片文件。
拍照或者从本地选取图片
这里我们直接使用Intent来调用相机应用拍照或者图片应用来选择图片,如下
private void dispatchTakePictureIntent(int actionCode) {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);try {File picFile = new File(Utils.getCameraFilePath(), System.currentTimeMillis() + ".jpg");picFile.createNewFile();mPhotoPath = picFile.getPath();intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(picFile));} catch (IOException e) {e.printStackTrace();}startActivityForResult(intent, actionCode);}private void dispatchGetPictureIntent(int actionCode) {mPhotoPath = null;Intent intent = new Intent(Intent.ACTION_PICK, null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");startActivityForResult(intent, actionCode);}
在调用其它应用后我们需要得到操作的图片,所以使用startActivityForResult()方法,在onActivityResult()中得到图片路径,
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == RESULT_OK) {// mPhotopath为空是指从相册选择的图片if (mPhotoPath == null) {Uri photoUri = data.getData();ContentResolver cr = this.getContentResolver();Cursor cursor = cr.query(photoUri, null, null, null, null);// 根据Uri从数据库中找if (cursor.moveToFirst()) {// 获取图片路径mPhotoPath = cursor.getString(cursor.getColumnIndex("_data"));}cursor.close();}if (mBitmap != null) {mBitmap.recycle();mBitmap = null;}mBitmap = BitmapFactory.decodeFile(mPhotoPath);if (mBitmap != null) {Bitmap temp = convertBmp(mBitmap);if (temp != null) {mImageView.setImageBitmap(temp);mBitmap.recycle();mBitmap = temp;}}mImageView.setImageBitmap(mBitmap);}
因为从相册选取本地图片后intent中只会保留一个缩略图,因此我们需要去查询媒体库来得到图片的具体路径。
下面是实际的运行效果
Android自拍相机应用——图片的镜像翻转相关推荐
- html图片水平镜像翻转
title: 图片水平镜像翻转 tags: html category: 前端开发 代码如下: <!DOCTYPE html> <html lang="en"&g ...
- flash图片如何镜像翻转_在canvas上实现元素图片镜像翻转动画效果的方法
这篇文章主要介绍了在canvas上实现元素图片镜像翻转动画效果的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧! 一.Canvas图片水平镜像翻转效果预览 ...
- android实现自定义相机以及图片的水印
最近在做图片的水印功能,也就研究了一下android的相机.在android中有两种方式可以进行拍照,一种是调用系统的拍照功能调用方式比较简单而且不需要权限. 调用方式: //照相机中获取照片publ ...
- android调用系统相机返回图片模糊
最近需要用到调用系统相机拍摄照片的功能,于是就直接调用系统的相机进行拍照,发现返回的bitmap存储之后都是非常模糊的 调用系统相机拍摄照片,由于StartActivityForResult过时,改用 ...
- Python-opencv 实现图片的镜像翻转
mport cv2 import numpy as npimg = cv2.imread('Test.jpg',1) imgInformation = img.shape #提取图片的信息 heigh ...
- flash图片如何镜像翻转_FLASH特效与实例-立体层旋转效果.
这是一个来自 Flashzone 的例子,幸运鸟只作了简单的加工.在这个示例中,同样用到了一些非常简单的 Actions ,而效果却很不错,所以通过它来进一步认 识 Actions 的用法是再好不过了 ...
- flash图片如何镜像翻转_flash中怎么制作镜像跳动文字效果 值得收藏
一般在动画片的开始或者影视等的片头这种效果比较常见,不难但是有点繁琐,所以大家在做的时候需要耐心点,熟练了之后就不觉得了 工具/材料 flash 操作方法 01 首先我们还是分析一下制作的关键点,这次 ...
- opencv-python图片的镜像
实现步骤 1.创建一个足够大的空白面板(也就是足够大的矩阵) 2.将原图片进行镜像翻转处理 3.将原图片和镜像图片放入空白面板中 4.在源图像和镜像图像之间画分割线 注意:本人为了能完整显示图片,将源 ...
- 前端实现图片快速反转替换_在canvas上实现元素图片镜像翻转动画效果的方法
一.Canvas图片水平镜像翻转效果预览 demo页面中点击图片动画效果可见. 二.Canvas上实现图片镜像翻转的实现 CSS中要想实现元素的翻转效果,比较简单,例如我们希望某一张图片水平镜像翻转, ...
最新文章
- 江苏开放大学计算机应用基础第四次作业,江苏开放大学-计算机应用基础第四次.doc...
- 水晶报表左侧树不显示属性设置
- leetcode-79-单词搜索(用dfs解决)
- XamarinAndroid组件教程设置动画的设置插值器
- codeblocks全屏模式怎么退出_IntelliJ IDEA 2020.1 EAP2 发布:新增禅模式和 LightEdit 模式...
- 三种代理服务器以及反向代理详解
- 《设计的品格 探索×呈现×进化的InDesign美学》—第1课1.3节文字游戏
- C#中Delegate和Event以及它们的区别
- windows2003 64位+iis6 php环境搭建
- 水利系统防雷,如何做好洪水预报警报系统的雷电防护
- java 如何查看文件编码_java判断文件编码 终于弄懂了编码是怎么回事
- 鸿蒙系统屏幕解锁问题,鸿蒙系统解锁卡退黑屏
- PC网站实现微信扫码登录功能(一)
- ubuntuv20启动界面美化_玩转Reno4手机,ColorOS 7.2界面清爽更贴心_手机通讯
- jsp+ssm计算机毕业设计演唱会售票系统【附源码】
- 并发知识体系大全:饿了么4面(Java岗)面经分享,干货满满
- 【AWS云从业者基础知识笔记】——模块1:AWS服务简介
- MySQL的隐式类型转换
- 由《编程之美》想到的
- 针对局域网IM飞秋(feiq)的开发总结