嘟嘟社区

[疑问] golang代码压缩图片后改变图片方向


本帖最后由 魔鬼筋肉人 于 2022-4-6 17:31 编辑

代码:
https://dmj1.lanzoub.com/i8NY002pyfzc

第一张图片压缩后图片方向会被旋转,而第二,三张却不会,很纳闷

求助大佬,实在搞不定了

  1. package main
  2. import (
  3.         "image/jpeg"
  4.         "os"
  5.         "log"
  6. )
  7. func main() {
  8.         imagePath :=".\压缩后图片方向会被旋转.JPG"
  9.         compress(imagePath)
  10. }
  11. func compress(imagePath string) {
  12.         //需要压缩
  13.         imgfile, err := os.Open(imagePath)
  14.         if err != nil {
  15.                 log.Println("os.Open::", err)
  16.                 return
  17.         }
  18.         defer imgfile.Close()
  19.         jpgimg, err := jpeg.Decode(imgfile)
  20.         if err != nil {
  21.                 log.Println("jpeg.Decode::", err)
  22.                 return
  23.         }
  24.         //保存到新文件中
  25.         newfile, err := os.Create(".\new.jpeg")
  26.         if err != nil {
  27.                 log.Println("Create::", err)
  28.                 return
  29.         }
  30.         defer newfile.Close()
  31.         // &jpeg.Options{Quality: 85} 图片压缩质量
  32.         err = jpeg.Encode(newfile, jpgimg, &jpeg.Options{Quality: 85})
  33.         if err != nil {
  34.                 log.Println("Encode::", err)
  35.                 return
  36.         }
  37. }

复制代码

没学过Golang,下一位!

Salta 发表于 2022-4-6 17:16
没学过Golang,下一位!

好的老哥

我也没学过Golang,下一位!

HardDisker 发表于 2022-4-6 17:40
我也没学过Golang,下一位!

哈哈好的老哥

你那图片EXIF里就是横的
没学过Golang,但看你的代码也没有处理旋转代码

pathletboy 发表于 2022-4-6 17:59
你那图片EXIF里就是横的

啊,拍下来是竖版的,导入电脑看也是竖版的

魔鬼筋肉人 发表于 2022-4-6 18:07
啊,拍下来是竖版的,导入电脑看也是竖版的

EXIF 有2个决定方向,一个是原始方向,也就是分辨率,5472*3648,还有一个是方向字段。你这图EXIF里分辨率是横的,要自己读EXIF旋转才行。

pathletboy 发表于 2022-4-6 18:10
EXIF 有2个决定方向,一个是原始方向,也就是分辨率,5472*3648,还有一个是方向字段。你这图EXIF里分辨 …

谢谢老哥 提醒 我再继续搜搜相关知识