当前位置: 首页 > ds >正文

根据Exif信息纠正图片方向

/ 工具函数:纠正图片方向并保存到新文件
fun correctImageOrientation(originalPath: String?,cachePath:File): String? {if(originalPath==null)return null// 读取原图的 Exif 方向val exif = ExifInterface(originalPath)val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_UNDEFINED)// 计算旋转角度val rotationDegrees = when (orientation) {ExifInterface.ORIENTATION_ROTATE_90 -> 90fExifInterface.ORIENTATION_ROTATE_180 -> 180fExifInterface.ORIENTATION_ROTATE_270 -> 270felse -> 0f // 无需旋转}// 如果方向正常,直接返回原图路径if (rotationDegrees == 0f) return null// 创建临时文件保存旋转后的图片val tempFile = File.createTempFile("rotated_", ".jpg", cachePath)val rotatedBitmap = BitmapFactory.decodeFile(originalPath)?: throw IOException("无法解码图片: $originalPath")// 旋转图片val matrix = Matrix().apply { postRotate(rotationDegrees) }val rotated = Bitmap.createBitmap(rotatedBitmap,0, 0,rotatedBitmap.width,rotatedBitmap.height,matrix,true)// 保存旋转后的图片,并重置 Exif 方向为正常FileOutputStream(tempFile).use { output ->rotated.compress(Bitmap.CompressFormat.JPEG, 100, output)}ExifInterface(tempFile.absolutePath).apply {setAttribute(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL.toString())saveAttributes()}// 回收 Bitmap 内存rotated.recycle()rotatedBitmap.recycle()return tempFile.absolutePath
}
http://www.xdnf.cn/news/425.html

相关文章:

  • MYSQL初阶(暂为自用草稿)
  • 哔哩哔哩工具箱:BiliTools v1.3.2
  • PyTorch数据操作基础教程:从张量创建到高级运算
  • 2563.统计公平数对的数目 是否顺序无关?
  • 【java实现+4种变体完整例子】排序算法中【希尔排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • Java 内存优化:如何避免内存泄漏?
  • 系分架构论文《论高并发场景的架构设计和开发方法》
  • REST 架构详解:从概念到应用的全面剖析
  • Vue3 + Three.js 场景编辑器开发实践
  • jangow靶机笔记(Vulnhub)
  • LeetCode 1365. 有多少小于当前数字的数字 java题解
  • phpy通用扩展:让PHP和Python手拉手
  • 基于SFC的windows修复程序,修复绝大部分系统损坏
  • 如何0基础学stm32?
  • 【操作系统原理01】操作系统引论
  • vue生命周期
  • 安徽合肥京东自营代运营如何突围?
  • 【网络技术_域名解析DNS】三、DNS 中间件实践应用与优化策略
  • Docker Swarm 容器与普通 Docker 容器的网卡差异
  • RTMP握手流程
  • 18、TimeDiff论文笔记
  • 用usb网卡 虚拟机无法开到全双工的解决办法
  • CUDA编程中影响正确性的小细节总结
  • mysql的函数(第一期)
  • [每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器
  • 【漫话机器学习系列】211.驻点(Stationary Points)
  • opencv--图像处理
  • [密码学基础]GMT 0029-2014签名验签服务器技术规范深度解析
  • 性能比拼: Elixir vs Go(第二轮)
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进