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

验证图片旋转

最近在使用百度图片翻译时遇到一个问题,就是图片会翻转90,经与百度沟通,发现是原始图片中有个旋转参数引起的。
于是写个demo验证一下。

// 获取元数据中的旋转方向
func getOrientation() int {//打开图像文件f, err := os.Open("image.jpg")if err != nil {log.Fatal(err)}defer f.Close()// 解码 EXIF 元数据x, err := exif.Decode(f)if err != nil {if err.Error() == "EOF" {return 0}log.Fatal(err)}// 获取图片方向orientation, err := x.Get(exif.Orientation)if err != nil {log.Fatalf("failed to get orientation: %v", err)}// 打印方向信息fmt.Println("Orientation:", orientation)// 根据 EXIF 方向信息获取旋转角度// 1: 正常(0°)// 3: 180°// 6: 90° 顺时针// 8: 270° 顺时针rotateDegrees := map[int]int{1: 0,3: 180,6: 90,8: 270,}value, err := orientation.Int(0)if err != nil {log.Fatalf("failed to parse orientation value: %v", err)}fmt.Printf("Rotate degrees: %d\n", rotateDegrees[value])return rotateDegrees[value]
}
// 直接旋转图片
func setRotate(angle int) {// 打开源图像文件startTime := time.Now()srcImage, err := imaging.Open("image-out.jpg")if err != nil {log.Fatalf("failed to open image: %v", err)}fmt.Println(angle)rotatedImage := imaging.Rotate(srcImage, float64(angle), image.Transparent)// 保存旋转后的图像err = imaging.Save(rotatedImage, "rotated_image.jpg")if err != nil {log.Fatalf("failed to save image: %v", err)}log.Println("Image rotated and saved to rotated_image.jpg", time.Since(startTime).Milliseconds())}

http://www.lryc.cn/news/414301.html

相关文章:

  • 宏景eHR /ajax/ajaxService SQL注入漏洞复现
  • 从源码看 Redis:深入理解 redisDb 和 redisObject
  • unity中实现流光效果——世界空间下
  • 项目经验分享:用4G路由器CPE接海康NVR采用国标GB28181协议TCP被动取流一段时间后设备就掉线了
  • 【RabbitMQ】RabbitMQ不公平分发_预取值
  • 最新AI模型使用指南和模型
  • 数据结构之八大基本排序方法
  • 《Milvus Cloud向量数据库指南》——什么是高可用:深入理解数据库系统中的高可用性架构
  • C++ | Leetcode C++题解之第319题灯泡开关
  • C# 使用 NLog 输出日志到文件夹
  • node.js使用NodeMachineID 生成唯一UUID和注意事项
  • AI大模型在数据治理中的应用
  • 【初学人工智能原理】【12】循环:序列依赖问题
  • 【QT】无法打开QT的ui文件,出现闪退情况
  • 三、Spring-WebFlux实战案例-流式
  • html+css 实现hover双层按钮
  • SPIFFS与LittleFS的对gz文件格式的区别
  • STM32L051K8U6-开发资料
  • Markdown语法学习
  • [最短路Floyd],启动!!!
  • 7月29(信息差)
  • ubuntu中禁止使用鼠标拖动来移动文件
  • 【密码学】椭圆曲线密码体制(ECC)
  • 第25集《大佛顶首楞严经》
  • python 读写文件之 open 和 with open() 详细解析
  • 操作系统:内存----知识点
  • pfx如何配置到nginx中
  • 详细测评下搬瓦工香港CN2 GIA VPS
  • Java中的五种线程池类型
  • FFmpeg Windows安装教程