fix: 修复媒体整理中的文件覆盖、BMP解析与重复整理问题

- 移动文件改用 uuid+原文件名,避免同名覆盖丢失数据
- BMP 负高度取绝对值,自顶向下格式解析正确
- 新增 {目录名}-picker 白名单输出目录,整理后跳过重复扫描
- 分类目录名去掉 uuid 前缀,重复运行并入已有目录
This commit is contained in:
2025-03-15 21:17:24 +08:00
parent 0ebd84d3fe
commit f5e3f6b4ef
8 changed files with 239 additions and 135 deletions
+61 -63
View File
@@ -2,7 +2,6 @@ package core
import (
"fmt"
uuid "github.com/satori/go.uuid"
_ "image/gif" // 导入gif支持
_ "image/jpeg" // 导入jpeg支持
_ "image/png" // 导入png支持
@@ -12,7 +11,7 @@ import (
"strings"
)
func DoHandleImage(rootDir string) {
func DoHandleImage(pickerDir string) {
total := len(vars.GlobalImagePathList) // 总数
successCount := 0 // 成功数
errorCount := 0 // 失败数
@@ -63,33 +62,32 @@ func DoHandleImage(rootDir string) {
ignoreCount = ignoreCount + 1
vars.ImageIgnorePathList = append(vars.ImageIgnorePathList, imageFilePath)
}
uid := strings.ReplaceAll(uuid.NewV4().String(), "-", "")
if len(vars.ImagePsdList) > 0 {
psdImagePath := rootDir + string(os.PathSeparator) + uid + "-图片_PSD"
psdImagePath := pickerDir + string(os.PathSeparator) + "图片_PSD"
if util.CreateDir(psdImagePath) {
util.DoMoveFileToDir(vars.ImagePsdList, psdImagePath)
}
}
if len(vars.ImageReadErrorPathList) > 0 {
readInfoErrorPath := rootDir + string(os.PathSeparator) + uid + "-图片_读取异常"
readInfoErrorPath := pickerDir + string(os.PathSeparator) + "图片_读取异常"
if util.CreateDir(readInfoErrorPath) {
util.DoMoveFileToDir(vars.ImageReadErrorPathList, readInfoErrorPath)
}
}
if len(vars.ImageIgnorePathList) > 0 {
ignorePath := rootDir + string(os.PathSeparator) + uid + "-图片_已忽略"
ignorePath := pickerDir + string(os.PathSeparator) + "图片_已忽略"
if util.CreateDir(ignorePath) {
util.DoMoveFileToDir(vars.ImageIgnorePathList, ignorePath)
}
}
doPickImageFile(uid, rootDir, vars.ImagePath2WidthHeightMap)
fmt.Printf("=== 图片处理完毕(UID): %s \n\n", uid)
doPickImageFile(pickerDir, vars.ImagePath2WidthHeightMap)
fmt.Printf("=== 图片处理完毕 \n\n")
}
// 条件图片并分组存放
func doPickImageFile(uid string, rootDir string, imagePath2WidthHeightMap map[string]string) {
func doPickImageFile(pickerDir string, imagePath2WidthHeightMap map[string]string) {
if len(vars.ImagePath2WidthHeightMap) == 0 {
fmt.Printf("=== 当前目录下没有扫描到图片文件, %s \n", rootDir)
fmt.Printf("=== 当前目录下没有扫描到图片文件, %s \n", pickerDir)
return
}
for currentImagePath, infoStr := range imagePath2WidthHeightMap {
@@ -111,10 +109,10 @@ func doPickImageFile(uid string, rootDir string, imagePath2WidthHeightMap map[st
}
handleSquareImage(currentImagePath, width)
}
moveHorizontalImage(rootDir, uid)
moveVerticalImage(rootDir, uid)
moveSquareImage(rootDir, uid)
moveGifImage(rootDir, uid)
moveHorizontalImage(pickerDir)
moveVerticalImage(pickerDir)
moveSquareImage(pickerDir)
moveGifImage(pickerDir)
}
// 统一处理gif
@@ -262,249 +260,249 @@ func handleSquareImage(currentImagePath string, width int) {
}
// 移动水平图片
func moveHorizontalImage(rootDir string, uid string) {
func moveHorizontalImage(pickerDir string) {
pathSeparator := string(os.PathSeparator)
// 标准
if len(vars.ImageHorizontalStandard720PList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_720P"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_720P"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard720PList, imageDirPath)
}
if len(vars.ImageHorizontalStandard1D5KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_1D5KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_1D5KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard1D5KList, imageDirPath)
}
if len(vars.ImageHorizontalStandard1080PList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_1080P"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_1080P"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard1080PList, imageDirPath)
}
if len(vars.ImageHorizontalStandard2DKList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_2DKP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_2DKP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard2DKList, imageDirPath)
}
if len(vars.ImageHorizontalStandard2D5KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_2D5KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_2D5KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard2D5KList, imageDirPath)
}
if len(vars.ImageHorizontalStandardUltraWide2List) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_ultraWide2KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_ultraWide2KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandardUltraWide2List, imageDirPath)
}
if len(vars.ImageHorizontalStandardUltraWide3List) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_ultraWide3KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_ultraWide3KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandardUltraWide3List, imageDirPath)
}
if len(vars.ImageHorizontalStandardUltraWide4List) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_ultraWide4KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_ultraWide4KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandardUltraWide4List, imageDirPath)
}
if len(vars.ImageHorizontalStandard4KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_4KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_4KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard4KList, imageDirPath)
}
if len(vars.ImageHorizontalStandard4KHList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_4KHP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_4KHP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard4KHList, imageDirPath)
}
if len(vars.ImageHorizontalStandard8KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_8KP"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_8KP"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalStandard8KList, imageDirPath)
}
// 非标准
if len(vars.ImageHorizontalNormalList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_普通"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_普通"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalNormalList, imageDirPath)
}
if len(vars.ImageHorizontal1KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_1K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_1K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal1KList, imageDirPath)
}
if len(vars.ImageHorizontal2KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_2K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_2K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal2KList, imageDirPath)
}
if len(vars.ImageHorizontal3KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_3K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_3K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal3KList, imageDirPath)
}
if len(vars.ImageHorizontal4KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_4K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_4K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal4KList, imageDirPath)
}
if len(vars.ImageHorizontal5KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_5K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_5K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal5KList, imageDirPath)
}
if len(vars.ImageHorizontal6KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_6K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_6K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal6KList, imageDirPath)
}
if len(vars.ImageHorizontal7KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_7K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_7K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal7KList, imageDirPath)
}
if len(vars.ImageHorizontal8KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_8K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_8K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal8KList, imageDirPath)
}
if len(vars.ImageHorizontal9KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_9K"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_9K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontal9KList, imageDirPath)
}
if len(vars.ImageHorizontalHKList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_横屏_原图"
imageDirPath := pickerDir + pathSeparator + "图片_横屏_原图"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageHorizontalHKList, imageDirPath)
}
}
// 移动垂直图片
func moveVerticalImage(rootDir string, uid string) {
func moveVerticalImage(pickerDir string) {
pathSeparator := string(os.PathSeparator)
// 非标准
if len(vars.ImageVerticalNormalList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_普通"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_普通"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVerticalNormalList, imageDirPath)
}
if len(vars.ImageVertical1KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_1K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_1K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical1KList, imageDirPath)
}
if len(vars.ImageVertical2KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_2K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_2K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical2KList, imageDirPath)
}
if len(vars.ImageVertical3KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_3K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_3K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical3KList, imageDirPath)
}
if len(vars.ImageVertical4KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_4K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_4K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical4KList, imageDirPath)
}
if len(vars.ImageVertical5KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_5K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_5K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical5KList, imageDirPath)
}
if len(vars.ImageVertical6KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_6K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_6K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical6KList, imageDirPath)
}
if len(vars.ImageVertical7KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_7K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_7K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical7KList, imageDirPath)
}
if len(vars.ImageVertical8KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_8K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_8K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical8KList, imageDirPath)
}
if len(vars.ImageVertical9KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_9K"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_9K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVertical9KList, imageDirPath)
}
if len(vars.ImageVerticalHKList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_竖屏_原图"
imageDirPath := pickerDir + pathSeparator + "图片_竖屏_原图"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageVerticalHKList, imageDirPath)
}
}
// 移动等比图片
func moveSquareImage(rootDir string, uid string) {
func moveSquareImage(pickerDir string) {
pathSeparator := string(os.PathSeparator)
// 非标准
if len(vars.ImageSquareNormalList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_普通"
imageDirPath := pickerDir + pathSeparator + "图片_等比_普通"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquareNormalList, imageDirPath)
}
if len(vars.ImageSquare1KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_1K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_1K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare1KList, imageDirPath)
}
if len(vars.ImageSquare2KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_2K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_2K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare2KList, imageDirPath)
}
if len(vars.ImageSquare3KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_3K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_3K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare3KList, imageDirPath)
}
if len(vars.ImageSquare4KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_4K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_4K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare4KList, imageDirPath)
}
if len(vars.ImageSquare5KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_5K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_5K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare5KList, imageDirPath)
}
if len(vars.ImageSquare6KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_6K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_6K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare6KList, imageDirPath)
}
if len(vars.ImageSquare7KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_7K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_7K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare7KList, imageDirPath)
}
if len(vars.ImageSquare8KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_8K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_8K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare8KList, imageDirPath)
}
if len(vars.ImageSquare9KList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_9K"
imageDirPath := pickerDir + pathSeparator + "图片_等比_9K"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquare9KList, imageDirPath)
}
if len(vars.ImageSquareHKList) > 0 {
imageDirPath := rootDir + pathSeparator + uid + "-图片_等比_原图"
imageDirPath := pickerDir + pathSeparator + "图片_等比_原图"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageSquareHKList, imageDirPath)
}
}
// 移动gif图片
func moveGifImage(rootDir string, uid string) {
func moveGifImage(pickerDir string) {
if len(vars.ImageGifList) > 0 {
pathSeparator := string(os.PathSeparator)
imageDirPath := rootDir + pathSeparator + uid + "-图片_GIF"
imageDirPath := pickerDir + pathSeparator + "图片_GIF"
util.CreateDir(imageDirPath)
util.DoMoveFileToDir(vars.ImageGifList, imageDirPath)
}