feat: 增加 EXIF 旋转图片自动转正

- 解析 JPEG EXIF Orientation,方向 5/6/7/8 的竖拍横存图不再误入横屏目录
- 配置 ffmpeg 时用 ffmpeg 物理转正像素并保留原 EXIF;无 ffmpeg 时按显示方向归类
- 新增 ffmpeg.path / organize.rotateImages 配置项
- 补充 EXIF 解析与旋转幂等测试
This commit is contained in:
2025-05-19 21:15:58 +08:00
parent 0c96a7bb63
commit 66faed75a2
7 changed files with 459 additions and 6 deletions
+13 -4
View File
@@ -12,10 +12,14 @@ import (
// - Port:网页服务用哪个端口(默认 8080)
// - Dsn:数据库文件叫什么(默认 media-info.db,放在程序目录下)
// - AutoOpen:启动后要不要自动打开浏览器
// - FFmpegPath:ffmpeg 程序路径(用于把带 EXIF 旋转标记的图片转正);留空自动在 PATH 里找
// - RotateImages:整理时是否自动转正带 EXIF 旋转标记的图片(默认 true)
type Config struct {
Port int
Dsn string
AutoOpen bool
Port int
Dsn string
AutoOpen bool
FFmpegPath string
RotateImages bool
}
// appConfig 当前生效的配置(程序运行期间一直不变)。
@@ -29,7 +33,7 @@ func GetAppConfig() Config {
// LoadAppConfig 从 application.properties 读配置;文件不存在就用默认值。
func LoadAppConfig() {
// 先给一套默认值
appConfig = Config{Port: 8080, Dsn: "media-info.db", AutoOpen: true}
appConfig = Config{Port: 8080, Dsn: "media-info.db", AutoOpen: true, RotateImages: true}
p, err := properties.LoadFile("application.properties", properties.UTF8)
if err != nil {
@@ -43,4 +47,9 @@ func LoadAppConfig() {
appConfig.Dsn = v
}
appConfig.AutoOpen = p.GetBool("server.autoOpen", true)
// ffmpeg 路径:留空表示自动在 PATH 里找
if v, ok := p.Get("ffmpeg.path"); ok && v != "" {
appConfig.FFmpegPath = v
}
appConfig.RotateImages = p.GetBool("organize.rotateImages", true)
}