【golang】处理jpeg图片压缩后方向发生变化问题

本文记录了在使用Golang处理苹果手机上传的JPEG照片时,压缩后图片方向变化的解决方法。问题源于苹果手机照片含有方向信息,压缩后该信息丢失。解决策略是在压缩前读取并根据照片方向信息进行翻转操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人宝宝出生后,特地为宝宝做了一个网站,用于上传照片、视频,想着是自己的网站,因此在前端上传的时候没有进行压缩,同时又为了提高图片加载速度,所以在后台进行了压缩。列表中看压缩图,点击看原图。然而通过苹果手机上传的照片经常会遇到压缩后照片方向发生变化的问题,而查看原图却正常,特此记录解决办法。

经过百度,发现是苹果手机拍摄的照片中带有方向信息,而压缩后就丢失了。因此在压缩前就需要读取方向信息,并做相应的方向翻转。

安装扩展库

用于读取方向信息

go get github.com/rwcarlsen/goexif/exif

完整代码main.go

package main

import (
	"image"
	"image/jpeg"
	"os"
	"github.com/rwcarlsen/goexif/exif"
)

func main() {
   
   
	src := "abc69678fae187df1b98ae5708e86583.jpeg"
	dst := "abc69678fae187df1b98ae5708e86583_thumb.jpeg"

	//通常只有 6,3,8 需要调整方向,所以不关心方向是否获取成功
	ori, _ := jpegOrientation(src)
	compress(ori, src, dst)

}

func compress(ori int, filename, dst string) error {
   
   
	sfp, err := os.Open(filename)
	if err != nil {
   
   
		return err
	}
	defer sfp.Close()

	img, _, err := image.Decode(sfp)
	if err != nil {
   
   
		return err
	}

	dfp, err := os.Create(dst)
	if err != nil {
   
   
		return err
	}

	var finalImg image.Image
	
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkyy3210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值