setRotation(90) 以肖像模式拍照不适用于三星设备

2024-06-11

根据文档,设置旋转(90) http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation%28int%29应旋转捕获的 JPEG 图片(拍照片 http://developer.android.com/reference/android/hardware/Camera.html#takePicture%28android.hardware.Camera.ShutterCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback%29在横向模式下。

这在 HTC 手机上运行良好,但不适用于三星 Google Nexus S 和三星 Galaxy S3。这是一个错误吗?

我知道我可以使用矩阵变换旋转,但希望操作系统能够更有效地执行此操作,并且不想在某些其他设备上冒过度旋转的风险。

edit

Setting camera.setDisplayOrientation(90);将预览设为纵向模式,但这对拍摄的照片没有任何影响。

此外,此外setRotation,我也尝试过设置图片大小-我翻转的地方h with w: parameters.setPictureSize(1200, 1600);。这也没有任何影响。

solution

显然,三星手机设置了 EXIF 方向标签,而不是旋转单个像素。作为ariefbayu建议,使用读取位图BitmapFactory不支持该标签。他的代码示例就是解决方案,并且该解决方案也兼容使用inSampleSize.


我尝试根据 Exif 标签来回答这个问题。这就是我所做的:

Bitmap realImage = BitmapFactory.decodeStream(stream);

ExifInterface exif=new ExifInterface(getRealPathFromURI(imagePath));

Log.d("EXIF value", exif.getAttribute(ExifInterface.TAG_ORIENTATION));
if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("6")){

    realImage=ImageUtil.rotate(realImage, 90);
}else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("8")){
    realImage=ImageUtil.rotate(realImage, 270);
}else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("3")){
    realImage=ImageUtil.rotate(realImage, 180);
}

The ImageUtil.rotate():

public static Bitmap rotate(Bitmap bitmap, int degree) {
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();

    Matrix mtx = new Matrix();
    mtx.postRotate(degree);

    return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setRotation(90) 以肖像模式拍照不适用于三星设备 的相关文章

随机推荐

  • PHPStorm - 如何设置实时编辑[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我刚刚安装 PHPStorm 但在实
  • 第二个内联块 div 上方的空白

    我确信我在这里忽略了一些东西 但无法解决 我的第二个内联块 div 上方有空白 只有当右侧 div 中的 文本此处 长度小于左侧 div 时 才会发生这种情况 js小提琴 http jsfiddle net B2S4r 2 http jsf
  • 内存栅栏:获取/加载和释放/存储

    我的理解std memory order acquire and std memory order release如下 Acquire意味着没有出现内存访问after获取栅栏可以重新排序到栅栏之前 Release意味着没有出现内存访问bef
  • 全局常量是反模式吗?

    我一直认为仅仅为了保持常量而创建一个类是一个糟糕的设计 但最近 我尝试用谷歌搜索它 发现只有一个界面作为常量是不好的反模式 没有提到使用一类常量 我认为 由于常量类实际上与全局变量没有太大区别 这就是我反对它并倾向于重构此类类的原因 它创建
  • 无法在 Crashlytics/fabric 中获取崩溃报告。显示错误:“看起来我们缺少 dSYM 来处理以下版本的崩溃。”

    我的 iOS 应用程序的 Fabric crashlytics 中未生成崩溃报告 Fabric 仪表板上显示错误 如屏幕截图所示 按照fabric的指示 我尝试从安装fabric mac应用程序的机器 我创建应用程序的版本 中搜索聚光灯下给
  • 努力理解 Python 需要虚拟环境的原因

    我来自 JavaScript 所以熟悉 NPM 在那里 您可以全局安装包 通过使用 g 标志 或在项目中本地安装包 在 Python 中 他们有这些虚拟环境 我仍然有点不确定为什么需要它们 我知道这是为了在一台机器上拥有不同版本的相同包 是
  • 如何在 PHP 中获取用户代理

    我使用这个 JS 代码来了解用户使用的浏览器 我想将此 navigator appName 获取到 php 代码以像这样使用它 if appName Internet Explorer blabla 我该怎么做 使用原生 PHP SERVE
  • 如何从 TCA 中的“showitems”中删除字段?

    TYPO3有这个功能TYPO3 CMS Core Utility ExtensionManagementUtility addToAllTCAtypes 向记录的 BE 形式添加或替换一个或多个字段 我们如何删除字段 替换为 不起作用 解释
  • 根据维基百科,为什么“call super”被视为反模式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Qt 为什么使用 QString::number() 而不是 QLocale().toString()?

    我正在开发的应用程序将在许多国家推出 并且需要支持他们的语言 我一直在回顾我的代码并替换以下每个实例 QString number and QString toDouble with QLocale toString and QLocale
  • 在一个查询中加载关联实体

    我有以下有效的代码 但我相信它执行多次查找只是为了获取与我的自定义 项目 实体关联的 帐户 实体 是否可以指定您想要填充哪些关联实体 而不必循环遍历初始结果集 public IList
  • PHP ArrayAccess 设置多维

    EDIT 我意识到文本量可能令人生畏 这个问题的本质是 如何以可以设置多维值的方式实现 ArrayAccess 我知道这个问题已经被讨论过here https stackoverflow com questions 2881431 arra
  • Protobuf-net 对字节数组进行序列化/反序列化

    我在 GC 敏感的环境中工作 并且对从预分配的字节数组而不是内存流序列化 反序列化 protobuf 感兴趣 protobuf net 库可以实现这一点吗 您可以初始化一个MemoryStream使用预先分配的缓冲区 请参阅this htt
  • 如何链接两个 Kotlin 函数参数的泛型类型?

    我想写一些类似的东西 fun
  • 分页后重新显示当前标题

    我正在使用 Wea syPrint 创建文档 我有一些带有名称的部分 其中一些可能跨越多个页面 当节太长时 就会出现分页符 我想做的是重新显示当前部分的名称 最好使用相同的格式 以下 MWE 显示了分页符后如何不显示节标题 h1 First
  • 关联数组不按顺序排列

    关联数组的顺序是这样的 A00 gt value1 A01 gt value2 B01 gt value3 B02 gt value4 但是在 for 循环之后数组顺序不起作用 for var key in obj3 code list1
  • SQL 内连接两个具有相同列名的表

    我有两个表 其列数不同 我不知道有多少列或名称是什么 例如表 A 和表 B TableA ID B ID variable TableB ID variable Query SELECT TableA TableB FROM TableA
  • R ggplot2 比例 alpha 离散以显示在图例中

    我正在尝试绘制两个因素 压力和性别 的图 并使用 alpha 值来传达性别 这是我的代码和结果图 ggplot subset df zfish data overall long day day 01 measure distance fr
  • 从curl获取(58)无法使用客户端证书(未找到密钥或密码短语错误?)

    我正在尝试对需要客户端证书的第三方 API 进行测试调用 我使用 openssl 命令生成了一个新证书 req new newkey rsa 2048 nodes out mycsr csr keyout mykey key 然后我向他们发
  • setRotation(90) 以肖像模式拍照不适用于三星设备

    根据文档 设置旋转 90 http developer android com reference android hardware Camera Parameters html setRotation 28int 29应旋转捕获的 JPE