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 }