三星手机拍照旋转问题 调用相机 拍照出现横竖屏切换?


拍照获取图片时,当应用是竖屏时,在部分手机上,如:三星note3上,图片不能正常显示,会旋转90°。

=_=

大概的思路就是拍照后获取图片旋转的角度,然后再回转同样的角度,一般均为0

1.调用拍照后,读取临时存储的图片,temp为自定义的路径
调用拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//下面这句指定调用相机拍照后的照片存储的路径intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
SQConstants.tempImgFile)));// SQConstants.tempImgFile文件名public static final String tempImgFile = "/avatar.png";
//intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
//intent.putExtra("return-data", true);
startActivityForResult(intent, SQConstants.AVATAR_CAMERA);//SQConstants.AVATAR_CAMERA为常量值,在返回activity时使用,可自行定义

读取图片Bitmap bm = BitmapsUtil.decodeFile(temp, 100);

 private static final int DEFAULT_REQUIRED_SIZE = 70;public static Bitmap decodeFile(File f, int size) {try {BitmapFactory.Options option = new BitmapFactory.Options();/**inJustDecodeBounds如果将其设为true的话,在decode时将会返回null。通过此设置可以去查询一个bitmap的属性,比如bitmap的长和宽,而不占用内存大小.同时可避免OOM*/option.inJustDecodeBounds = true;FileInputStream stream1 = new FileInputStream(f);BitmapFactory.decodeStream(stream1, null, option);stream1.close();final int REQUIRED_SIZE = size > 0 ? size : DEFAULT_REQUIRED_SIZE;int width_tmp = option.outWidth, height_tmp = option.outHeight;int scale = 1;while (true) {if (width_tmp / 2 < REQUIRED_SIZE|| height_tmp / 2 < REQUIRED_SIZE)break;width_tmp /= 2;height_tmp /= 2;scale *= 2;}if (scale >= 2) {scale /= 2;}BitmapFactory.Options option2 = new BitmapFactory.Options();option2.inSampleSize = scale;FileInputStream stream2 = new FileInputStream(f);Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, option2);stream2.close();return bitmap;} catch (FileNotFoundException e) {} catch (IOException e) {e.printStackTrace();}return null;}

2.获取图片旋转的角度,然后给它旋转回来
int degree = BitmapsUtil.readPictureDegree(temp.getAbsolutePath());

/*** 获取图片信息* * @param path* @return*/public static int readPictureDegree(String path) {int degree = 0;try {ExifInterface exifInterface = new ExifInterface(path);int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:degree = 90;break;case ExifInterface.ORIENTATION_ROTATE_180:degree = 180;break;case ExifInterface.ORIENTATION_ROTATE_270:degree = 270;break;}} catch (IOException e) {e.printStackTrace();}return degree;}

3.根据指定旋转度数进行图片旋转
Bitmap bitmap = BitmapsUtil.rotaingImageView(degree, bm);

 /*** 图片旋转* * @param angle* @param bitmap* @return*/public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {// 旋转图片 动作Matrix matrix = new Matrix();matrix.postRotate(angle);System.out.println("angle=" + angle);// 创建新的图片Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,bitmap.getWidth(), bitmap.getHeight(), matrix, true);return resizedBitmap;}

4.存储旋转后图片
compressHeadPhoto(bitmap);

 private File rotateFile;private void compressHeadPhoto(final Bitmap bm) {rotateFile = new File(Environment.getExternalStorageDirectory(),"rotate.png");try {bm.compress(Bitmap.CompressFormat.PNG, 70, new FileOutputStream(rotateFile));} catch (FileNotFoundException e) {e.printStackTrace();}}

5.调用图片裁切
startPhotoZoom(Uri.fromFile(rotateFile));

   /*** 裁剪图片方法实现* @param uri*/public void startPhotoZoom(Uri uri) {Logs.i("startPhotoZoom uri: " + uri);/** 至于下面这个Intent的ACTION是怎么知道的,大家可以看下自己路径下的如下网页* yourself_sdk_path/docs/reference/android/content/Intent.html* 直接在里面 Ctrl+F 搜:CROP **/Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");//下面这个crop=true是设置在开启的Intent中设置显示的view可裁剪intent.putExtra("crop", "true");// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪图片宽高intent.putExtra("outputX", 150);intent.putExtra("outputY", 150);intent.putExtra("return-data", true);startActivityForResult(intent, SQConstants.AVATAR_C_A_DATA_IMG);}

  • Markdown和扩展Markdown简洁的语法
  • 代码块高亮
  • 图片链接和图片上传
  • LaTex数学公式
  • UML序列图和流程图
  • 离线写博客
  • 导入导出Markdown文件
  • 丰富的快捷键

快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

表格

Markdown Extra 表格语法:

项目 价格
Computer $1600
Phone $12
Pipe $1

可以使用冒号来定义对齐方式:

项目 价格 数量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定义列表

Markdown Extra 定义列表语法: 项目1 项目2
定义 A
定义 B
项目3
定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:

@requires_authorization
def somefunc(param1='', param2=0):'''A docstring'''if param1 > param2: # interestingprint 'Greater'return (param2 - param1 + 1) or None
class SomeClass:pass
>>> message = '''interpreter
... prompt'''

脚注

生成一个脚注1.

目录

[TOC]来生成目录:

    • 三星手机拍照旋转问题 调用相机 拍照出现横竖屏切换
  • 快捷键
  • Markdown及扩展
    • 表格
    • 定义列表
    • 代码块
    • 脚注
    • 目录
    • 数学公式
    • UML 图
  • 离线写博客
  • 浏览器兼容

数学公式

使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

  • 行内公式,数学公式为: Γ(n)=(n−1)!∀n∈N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N。
  • 块级公式:
x=−b±b2−4ac−−−−−−−√2a

x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a}

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.0 张三 张三 李四 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说: 忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.0 开始 我的操作 确认? 结束 yes no
  • 关于 序列图 语法,参考 这儿,
  • 关于 流程图 语法,参考 这儿.

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。 

用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入


  1. 这里是 脚注内容. ↩

三星手机拍照旋转问题 调用相机拍照出现横竖屏切换?相关推荐

  1. android相机拍照代码,Android 调用相机拍照,适配到Android 10

    今天写的博客是关于Android调用手机相机拍照并显示图片.这是一个很常用的功能,并且这个功能在Android6.0.7.0.10.0等版本上实现都有所不同,需要对Android各个版本进行兼容适配, ...

  2. 安卓端调用相机拍照返回并预览---清晰原图

    安卓端调用相机拍照并返回预览图片 一.demo预览 二.xml代码和activity简单代码描述. 三.老规矩再来写几个转换工具方法 继之前写的安卓调用相机拍照返回预览,如果对于画质要求不高的话可以考 ...

  3. 三星、LG等部分手机调用相机拍照的模糊问题和拍照选取相册图片旋转问题

    项目场景: 调用系统相机拍照.选择相册照片 问题描述: 部分手机(例如:三星.LG)调用系统相机拍照会模糊和旋转问题,选择的照片也会旋转问题 调用代码: Intent intent = new Int ...

  4. android intent拍照,Android通过Intent方式调用相机拍照取得图片

    Android通过Intent方式调用相机拍照取得图片 AndroidManifest.XML 权限设置: XML布局设置: 代码: public classMainActivityextendsAp ...

  5. Android调用相机拍照高清原图(兼容7.0)

    在安卓更新7.0的版本后,要调用相机拍照获取原图则需要先把拍摄后的内容保存到目录,然后再借助provider调出来显示,相比以前可以说十分繁琐,但为了摆脱马赛克画质的困扰,为了更好的用户体验,还是硬着 ...

  6. Android 调用相机拍照并保存

    不知不觉已经两年多已经没有写文章了,转眼间大学都要毕业了,也是有些唏嘘,今后会定期发表些文章,应该会以Android为主,也会夹杂其他领域的一些文章. 话不多说,今天做了一个小demo,就是调用相机拍 ...

  7. Android中拍照完就给图片加水印,Android调用相机拍照并添加水印

    最近项目提出新需求,要求在拍照后在图片上添加用户信息的水印,so,楼主重新整理封装了一个简单的拍照+水印的工具类,需求不同,仅供参考.文件操作及权限做了适配,支持androidN及以上版本,放心使用. ...

  8. Android 调用相机拍照,适配到Android 10,2021必看

    //拒绝权限,弹出提示框. Toast.makeText(this,"拍照权限被拒绝",Toast.LENGTH_LONG).show(); } } } 申请权限后,就可以调起相机 ...

  9. android 调用相机拍照。适配到 Android 10

    Photograph 项目地址:donkingliang/Photograph 简介: android 调用相机拍照.适配到 Android 10 更多:作者   提 Bug 标签: android ...

最新文章

  1. case when里的like功能 ////// 截取(substr)
  2. 开发日记-20190330
  3. 设置打包方式为war
  4. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定
  5. 李宏毅老师ML_HW1——PM2.5预测
  6. mysql的service name_【Oracle】service_name和service_names的关系
  7. linux内核实现片选跳变,《Linux内核设计与实现》读书笔记:进程调度
  8. 利用navicat将数据库中的查询结果导出文件
  9. 链表的实现 -- 数据结构与算法的javascript描述 第六章
  10. Fortran入门教程(五)——选择结构
  11. 浅析iOSApp签名原理及流程
  12. 堆空间释放后使用的异常
  13. 业务系统+电子签章开放平台,快速构建个性化的电子签署应用
  14. linux系统 中文定制版,我们的Ubuntu 中文定制版呢?
  15. 阿里云服务器是否限制流量?阿里云固定宽带和按使用流量计费2种方式解读
  16. 麦吉尔大学计算机科学申请,加拿大麦吉尔大学计算机科学硕士成功案例分享
  17. 学习springboot第一天
  18. PAT甲级1012:The Best Rank (25)
  19. 计算机品牌企业关系图,AJ71C24-S3 画出PLC的I/O点与输入/输出设备的连接图或对应关系表, 三菱AJ71C24-S3 - 广州凌控...
  20. replication factor: 3 larger than available brokers: 1

热门文章

  1. 提取公积金所需材料及注意事项
  2. 链上人才专访:愿做区块链行业基石 | ArcBlock 媒体
  3. linux中内核4c,Linux内核编译
  4. SKIN++皮肤的使用
  5. java支付宝开发流程
  6. python:一元线性回归分析实例: 基金净值
  7. 【开源访谈】AVPlayer 作者王功铭访谈实录
  8. Linux:sshpass和scp的使用
  9. 微信小程序获取用户信息(getUserProfile)
  10. 小学生计算机课如何上,如何上好一堂小学信息技术课