package main
import (
"encoding/base64"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
func main() {
// 从命令行参数获取文件夹路径
if len(os.Args) < 2 {
fmt.Println("请提供要处理的文件夹路径")
return
}
folderPath := os.Args[1]
// 检查文件夹是否存在
_, err := os.Stat(folderPath)
if os.IsNotExist(err) {
fmt.Println("指定的文件夹路径不存在")
return
}
// 获取上级目录路径
parentFolderPath := filepath.Dir(folderPath)
// 获取原始文件夹名称并创建保存图片的文件夹
imageFolderName := filepath.Base(folderPath) + "_image"
imageFolderPath := filepath.Join(parentFolderPath, imageFolderName)
err = os.Mkdir(imageFolderPath, 0755)
if err != nil {
fmt.Println("无法创建图片文件夹:", err)
return
}
// 遍历文件夹
err = filepath.Walk(folderPath, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 检查是否是文件
if !info.IsDir() {
// 检查文件是否以 .txt 结尾
if strings.HasSuffix(strings.ToLower(info.Name()), ".txt") {
// 读取 base64 文件内容
base64Data, err := ioutil.ReadFile(path)
if err != nil {
return err
}
// 解码 base64 字符串为图片数据
imageData, err := base64.StdEncoding.DecodeString(string(base64Data))
if err != nil {
return err
}
// 生成图片文件名(去掉 .txt 后缀)
imageFileName := strings.TrimSuffix(info.Name(), ".txt")
imageFilePath := filepath.Join(imageFolderPath, imageFileName)
// 创建图片文件并写入解码后的数据
err = ioutil.WriteFile(imageFilePath, imageData, 0644)
if err != nil {
return err
}
fmt.Printf("文件 %s 转换成功并保存为图片 %s\n", path, imageFilePath)
}
}
return nil
})
if err != nil {
fmt.Println("出现错误:", err)
}
}