Files
odboy 4da4b738e6 refactor: 按模块重构项目结构
- 删除 vars 全局状态,按职责拆分 internal/ 包:scanner/probe/classify/organize/mover/store/digest
- 数据驱动归类规则替代图片/视频重复分支,store 改为结构体实例
- build.sh 按系统类型编译:Windows 用 upx 压缩,macOS/Linux 不压缩
- 忽略目录拆分:图片_已忽略 / 视频_已忽略
- 输出构建产物加入 .gitignore
2025-03-26 21:08:12 +08:00

33 lines
801 B
Go

package probe
import (
"encoding/binary"
"fmt"
"io"
"os"
)
// probePsd 读取 PSD/PSB 格式的宽高(两者共享相同的 8BPS 文件头)
func probePsd(filePath string) (*ProbeResult, error) {
f, err := os.Open(filePath)
if err != nil {
return nil, err
}
defer f.Close()
var header [26]byte
if _, err := io.ReadFull(f, header[:]); err != nil {
return nil, err
}
if string(header[0:4]) != "8BPS" {
return nil, fmt.Errorf("not a valid PSD/PSB file")
}
version := binary.BigEndian.Uint16(header[4:6])
if version != 1 && version != 2 {
return nil, fmt.Errorf("unsupported PSD/PSB version: %d", version)
}
height := int(binary.BigEndian.Uint32(header[14:18]))
width := int(binary.BigEndian.Uint32(header[18:22]))
return &ProbeResult{Width: width, Height: height}, nil
}