golang 命令行生成样机图片

[从零开始学DeepFaceLab-19]: 使用-命令行八大操作步骤 - 如何生成自己的目标图片或视频 目录 第1步骤:命令行环境准备 1.1 准备 1.2 命令 第2步骤:从源视频中提取图片 2.1 准备:无 2.2 命令: 第3步骤:从目标视频中提取图片 3.1 准备:无 3.2 命令: 第4步骤:从目标图片中提取所需图片 4.1 准备:无 4.2 命令: 第5步骤:从源图片中提取所需图片 5.1 准备:无 5.2 命令: 第6步骤:模型的选择与训练(关键) 6.1 准备:拷贝模型 6.2 命令: 6.3 调参 6.4 训练 第7步骤:模型预测与生成合成图片(关键 阅读详情

因为工作需要把一批图片按照样机处理成固定的样子,就用 golang 写了一个小脚本来处理

package main

import (
    "flag"
    "fmt"
    "github.com/nfnt/resize"
    "image"
    "image/draw"
    "image/jpeg"
    "image/png"
    "io/ioutil"
    "os"
    "path/filepath"
    "strconv"
    "strings"
    "sync"
    "time"
)

var wg sync.WaitGroup

func main()  {
    start := time.Now()
    dir, err := os.Getwd()
    if err != nil {
        fmt.Println(err)
    }

    // 待存在目录
    var picDir string
    // 保存目录
    var out string
    // 模板 ID
    var template int

    flag.StringVar(&picDir, "p", "", "请输入待处理图片的目录")
    flag.StringVar(&out, "o", "", "请输入保存图片的目录")
    flag.IntVar(&template, "t", 0, "请输入模板:1-3")
    flag.Parse()


    if picDir == "" {
        fmt.Println("请输入待处理图片的目录")
        return
    }
    if out == "" {
        fmt.Println("请输入保存图片的目录")
        return
    }

    exit, _ := PathExists(out)
    if !exit {
        err := os.Mkdir(out, 0777)
        if err != nil {
            panic(err)
        }
    }

    if template == 0 {
        fmt.Println("请输入模板")
        return
    }
    if template > 3 && template < 1 {
        fmt.Println("模板只能在1-3")
        return
    }

    suffixList := [] string {
        ".jpg",
        ".jpeg",
        ".png",
    }
    picList, err := GetAllFiles(picDir, suffixList)
    if err != nil {
        panic(err)
    }

    if len(picList) == 0 {
        fmt.Println(picDir + " 文件夹下面没有图片")
        return
    }

    for _, pic := range picList {
        wg.Add(1) // 启动一个goroutine就登记+1
        switch template {
            case 1:
                baseTpl := dir + "\\template\\01.jpg"
                go template1(baseTpl, out, pic)
                break
            case 2:
                baseTpl := dir + "\\template\\02.jpg"
                go template2(baseTpl, out, pic)
                break
            case 3:
                baseTpl := dir + "\\template\\03.jpg"
                go template3(baseTpl, out, pic)
                break
        }
    }

    wg.Wait() // 等待所有登记的goroutine都结束

    end := time.Since(start)
    fmt.Println("选择样机 0" + strconv.Itoa(template) + ".jpg 共生成 " + strconv.Itoa(len(picList)) + " 图片,耗时:", end)
}

/**
* @param baseTpl 模板
* @param outDir 保存路径
* @param sourcePic 源文件
 */
func template1(baseTpl, outDir, sourcePic string) {
    defer wg.Done() // goroutine结束就登记-1
    templateFile, err := os.Open(baseTpl)
    if err != nil {
        panic(err)
    }
    defer templateFile.Close()
    // 解码
    templateFileImage, err := jpeg.Decode(templateFile)
    if err != nil {
        panic(err)
    }
    // 新建一张和模板文件一样大小的画布
    newTemplateImage := image.NewRGBA(templateFileImage.Bounds())
    // 将模板图片画到新建的画布上
    draw.Draw(newTemplateImage, templateFileImage.Bounds(), templateFileImage, templateFileImage.Bounds().Min, draw.Over)

    // ====================向模板中粘贴图片 begin========================
    imageData, err := getDataByImage(sourcePic)
    if err != nil {
        fmt.Println("获取图片失败,err:", err.Error())
        return
    }


    //2、重新调整要粘贴图片尺寸
    imageData = resize.Resize(575, 431, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(366, 74)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    imageData = resize.Resize(600, 450, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(106, 956)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)


    imageData = resize.Resize(1024, 916, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(0, 1779)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    _, fileName := filepath.Split(sourcePic)
    // ====================向模板中粘贴图片 结束========================
    // 保存图片  ---> 在此我们统一将文件保存到:
    outFile := strings.TrimRight(outDir, "\\")  + "\\" + fileName
    saveFile(newTemplateImage, outFile)
}

/**
* @param baseTpl 模板
* @param outDir 保存路径
* @param sourcePic 源文件
 */
func template2(baseTpl, outDir, sourcePic string) {
    defer wg.Done() // goroutine结束就登记-1
    templateFile, err := os.Open(baseTpl)
    if err != nil {
        panic(err)
    }
    defer templateFile.Close()
    // 解码
    templateFileImage, err := jpeg.Decode(templateFile)
    if err != nil {
        panic(err)
    }
    // 新建一张和模板文件一样大小的画布
    newTemplateImage := image.NewRGBA(templateFileImage.Bounds())
    // 将模板图片画到新建的画布上
    draw.Draw(newTemplateImage, templateFileImage.Bounds(), templateFileImage, templateFileImage.Bounds().Min, draw.Over)

    // ====================向模板中粘贴图片 begin========================
    imageData, err := getDataByImage(sourcePic)
    if err != nil {
        fmt.Println("获取图片失败,err:", err.Error())
        return
    }


    //2、重新调整要粘贴图片尺寸
    imageData = resize.Resize(760, 760, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(134, 165)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    imageData = resize.Resize(704, 704, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(163, 1870)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)


    imageData = resize.Resize(1024, 885, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(0, 3407)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    _, fileName := filepath.Split(sourcePic)
    // ====================向模板中粘贴图片 结束========================
    // 保存图片  ---> 在此我们统一将文件保存到:
    outFile := strings.TrimRight(outDir, "\\")  + "\\" + fileName
    saveFile(newTemplateImage, outFile)
}

/**
* @param baseTpl 模板
* @param outDir 保存路径
* @param sourcePic 源文件
 */
func template3(baseTpl, outDir, sourcePic string) {
    defer wg.Done() // goroutine结束就登记-1
    templateFile, err := os.Open(baseTpl)
    if err != nil {
        panic(err)
    }
    defer templateFile.Close()
    // 解码
    templateFileImage, err := jpeg.Decode(templateFile)
    if err != nil {
        panic(err)
    }
    // 新建一张和模板文件一样大小的画布
    newTemplateImage := image.NewRGBA(templateFileImage.Bounds())
    // 将模板图片画到新建的画布上
    draw.Draw(newTemplateImage, templateFileImage.Bounds(), templateFileImage, templateFileImage.Bounds().Min, draw.Over)

    // ====================向模板中粘贴图片 begin========================
    imageData, err := getDataByImage(sourcePic)
    if err != nil {
        fmt.Println("获取图片失败,err:", err.Error())
        return
    }


    //2、重新调整要粘贴图片尺寸
    imageData = resize.Resize(1606, 2273, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(150, 103)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    imageData = resize.Resize(1095, 1549, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(575, 3611)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)


    imageData = resize.Resize(970, 1373, imageData, resize.Lanczos3)
    //     粘贴缩略图
    draw.Draw(newTemplateImage,
        newTemplateImage.Bounds().Add(image.Pt(227, 6778)),
        imageData,
        imageData.Bounds().Min,
        draw.Over)

    _, fileName := filepath.Split(sourcePic)
    // ====================向模板中粘贴图片 结束========================
    // 保存图片  ---> 在此我们统一将文件保存到:
    outFile := strings.TrimRight(outDir, "\\")  + "\\" + fileName
    saveFile(newTemplateImage, outFile)
}


//获取指定目录下的所有文件,包含子目录下的文件
func GetAllFiles(dirPth string, suffixList []string) (files []string, err error) {
    var dirs []string
    dir, err := ioutil.ReadDir(dirPth)
    if err != nil {
        return nil, err
    }

    PthSep := string(os.PathSeparator)

    for _, fi := range dir {
        if fi.IsDir() { // 目录, 递归遍历
            dirs = append(dirs, dirPth+PthSep+fi.Name())
            GetAllFiles(dirPth + PthSep + fi.Name(), suffixList)
        } else {
            // 过滤指定格式
            for _, suffix := range suffixList {
                fileName := strings.ToLower(fi.Name())
                ok := strings.HasSuffix(fileName, suffix)
                if ok {
                    files = append(files, dirPth+PthSep+fi.Name())
                }
            }
        }
    }

    // 读取子目录下文件
    for _, table := range dirs {
        temp, _ := GetAllFiles(table, suffixList)
        for _, temp1 := range temp {
            files = append(files, temp1)
        }
    }

    return files, nil
}

// 根据地址获取图片内容
func getDataByImage(picUrl string) (img image.Image, err error) {
    if !strings.HasPrefix(picUrl, ".jpg") &&
        !strings.HasPrefix(picUrl, ".jpeg") &&
        !strings.HasPrefix(picUrl, ".jpg") {
        err = fmt.Errorf("[%s]不支持的图片类型,暂只支持.jpg、.png文件类型", picUrl)
    }

    fp, err := os.Open(picUrl)
    if err != nil {
        return nil, err
    }
    defer fp.Close()

    // 解码图片
    if strings.HasSuffix(picUrl, ".jpg") || strings.HasSuffix(picUrl, ".jpeg") {
        img, err = jpeg.Decode(fp)
        if err != nil {
            return nil, err
        }
    }

    if strings.HasSuffix(picUrl, ".png") {
        img, err = png.Decode(fp)
        if err != nil {
            err = fmt.Errorf("png.Decode err:%s", err.Error())
            return nil, err
        }
    }

    return img, nil
}

func saveFile(pic *image.RGBA, outFile string) {
    dstFile, err := os.Create(outFile)
    if err != nil {
        fmt.Println(err)
    }
    defer dstFile.Close()
    err = jpeg.Encode(dstFile, pic, nil)
    if err != nil {
        panic(err)
    }
}
/**
* 判断目录是否存
 */
func PathExists(path string) (bool, error) {
    _, err := os.Stat(path)
    if err == nil {
        return true, nil
    }
    if os.IsNotExist(err) {
        return false, nil
    }
    return false, err
}
基于YOLO11的垃圾分类AI模型训练实战 通过这次实战,我们成功训练出了一个高性能的垃圾分类AI模型。项目展示了从数据准备、模型训练到结果分析的完整流程,为AI在环保领域的应用提供了有价值的参考。项目文件结构│ ├── best.pt # 最佳模型权重│ └── last.pt # 最新模型权重├── results.csv # 详细训练数据├── results.png # 训练曲线图├── confusion_matrix.png # 混淆矩阵└── args.yaml # 训练参数配置。 阅读详情

相关推荐

逆向工程实战:如何一步步破解京东APP的sign签名算法(附Frida脚本)

本文详细解析了京东APP的sign签名算法逆向工程实战,通过Frida脚本动态分析Java层和Native层的多层签名机制,揭示商业应用的加密协议设计。文章提供了完整的逆向工程方法论与工具链,帮助开发者深入理解移动应用安全防护体系,提升安全防御能力。

weixin_28622215的博客 918

Springboot banner 生成网址

http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20

每每看到代码,就会有亲切之感! 5516

AI产品经理必备:Agent评测维度、指标与工程化落地指南

随着大模型从单轮问答走向复杂的Agent应用,如何科学地评测一个Agent是否真正“办成了事”,成为AI产品经理必须掌握的核心能力。与传统大模型评测关注回答质量不同,Agent评测需要综合评估任务规划、工具调用、多轮对话一致性以及失败自愈等行为。任务完成率与工具调用成功率是最关键的两个量化指标,同时还需关注延迟与Token成本等工程约束。在实际落地中,评测集的设计要覆盖业务主流程与边界场景,并通过批量回归测试与版本对比,为产品选型、算法迭代和上线决策提供数据支持。本文系统拆解了Agent评测的完整流程,帮助

weixin_29057163的博客 344

Linux打印一个文字logo

这只是一个logo,可能在以后会有用处,闲暇时也可拿来练手的小tips。一、Linux_logo是什么?linuxlogo(或叫 linux_logo)

weixin_50613762的博客 1663

基于CPCC_S_TASK_LIST_MAINTAIN的工艺路线组件批量分配实战与避坑指南

本文详细解析了SAP PP模块中基于CPCC_S_TASK_LIST_MAINTAIN函数实现工艺路线组件批量分配的实战技巧与避坑指南。针对批量分配的核心挑战,提供了参数配置、BAPI协同使用、Excel导入等解决方案,并分享了大容量数据处理优化经验,帮助用户高效完成工艺路线组件分配任务。

weixin_33563728的博客 306

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来

本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。

weixin_30787531的博客 220

Linux启动界面显示LOGO(1)

一. 将png图片改成.ppm格式。首先你要有个 和自己屏幕分辨率一样 或者 小于屏幕分辨率的图片,如linux_iunin_logo.png 以下操作都是在ubuntu主机上命令行操作: ①将png图片转成pnm pngtopnm linux_iunin_logo.png > linux_iunin_logo.pnm ②将pnm图片的颜色数限制在2...

casy的专栏 1521

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

linux 命令行 发行版,分享|Linux_Logo – 输出彩色 ANSI Linux 发行版徽标的命令行工具...

linuxlogo(或叫 linux_logo)是一款在Linux命令行下用彩色 ANSI 代码生成附带有系统信息的发行版徽标的工具。Linux_Logo – 输出彩色 ANSI Linux 发行版徽标这个小工具可以从 /proc 文件系统中获取系统信息并可以显示包括主机上安装的发行版在内的很多发行版的徽标。与徽标一同显示的系统信息包括 : Linux 内核版本,最近一次编译Linux内核的时间,...

weixin_35812582的博客 915

LVGL hal indev(porting evdev)

LVGL中对输入设备的管理是单例实现的,而在Linux的输入设备是多个的,所以需要对其进行改造成多例实现。

Bigan(安)的博客 3346

手把手教你学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

MHD0815的博客 146

Golang编程百例-Golang输出特殊图案

Golang输出特殊图案 描述 用 Golang 实现,输出特殊图案。 题目 输出特殊图案。 题目解决思路 我们直接使用 print 输出即可。 代码具体实现 package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") var a, b = 176, 219 fmt.Printf("%c%c%c%c%c \n", b, a, a, a, b) fmt.Printf("%c%c%c%c%c \

haicoder_ibai的博客 1021

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

宇树科技IPO后挑战:四足机器人技术产品化与规模化之路

机器人技术作为人工智能与机电一体化的前沿交叉领域,其核心在于通过运动控制、环境感知与智能决策算法,赋予机器自主执行复杂任务的能力。从原理上看,机器人系统通常基于ROS(机器人操作系统)等框架构建,融合传感器数据、实时控制与任务规划模块,实现从感知到行动的闭环。其技术价值在于替代或辅助人类在危险、重复或高精度场景下的作业,提升效率与安全性。在应用场景上,已从早期的工业自动化,拓展至安防巡检、物流配送、医疗康复与服务等多个领域。随着以宇树科技为代表的四足机器人公司走向资本市场,行业关注点正从实验室的‘运动炫技’

weixin_33836874的博客 394

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Go语言输出正弦函数

package main import ( "image" "image/color" "image/png" "log" "math" "os" ) func main() { //图片大小 const size = 300 //声明size常量 //根据给定大小创建灰度图片对象 pic:=image.NewGray(image.Rect(0,0,size,siz...

qq_41661056的博客 614

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

745_在命令行中显示linux logo

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 以前很多次看到别人展示平台搭建的时候,展示过一个截图:在命令行中显示linux的logo。今天折腾树莓派的时候偶然发现了这个功能,原来是一个额外的小工具。 为了验证这个是不是一个通用的工具,我先测试一下WSL。 首先安装工具linuxlogo工具。 接下来,看看运行效果:: ...

小灰笔记 1082

Golang图像处理实战:image/png包的应用详解

在当今的软件开发领域,图像处理已成为一项基础且重要的技能。特别是在Web和移动应用中,有效地处理和优化图像,可以极大地提升应用的性能和用户体验。Golang作为一种高效的编程语言,其标准库中的image/png包提供了一套强大的工具,使开发者能够方便地进行PNG图像的读取、处理和保存。本文将深入探讨image/png包的各种实用功能和技巧。从基本的文件读取和保存,到更复杂的图像处理操作,再到高级功能的实现,我们将通过详细的代码示例,帮助开发者掌握如何在实战项目中有效地使用这个库。

walkskyer的博客 2712

golang:生成测试用的小图片

package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { file, err := os.Create("test.jpeg") if err != nil { log.Fatal(err) } defer file.Close() alpha := imag...

OceanStar的博客 1157

golang游戏开发学习笔记-用golang画一个随时间变化颜色的正方形

语言编写,学过责任链设计模式的同学可以将着色器理解为责任链中的不同部分,前一个程序的输出是后一个程序的输入,我们分别编写一个顶点着色器和片段着色器并编写一个使用。,所以两个重复的顶点直接省略,而第二个切片的每一行分别代表前一个切面中顶点的索引,分别构成对应的三角形。前一个切片内保存的是构成两个三角形所需要的所有顶点,由于我们会用到。初始化窗口并设置属性,这里设置窗口不可改变大小,要注意的是。需要在其被初始化之后的线程里被调用。在国内似乎被qiang了,好在。,如果没有,需要安装。5.构建图像以及缓冲。

2401_86963650的博客 918

golang中的图像image处理详解

golang中的图像image处理详解

猛犸象 5360

Golang修改图片JPEGjpg的大小和质量

1 借助 nfnt/resize 修改图片的尺寸 2 借助 原生的 image/jpeg 修改质量 package fyimage import ( "bytes" "github.com/gogf/gf/os/glog" "github.com/nfnt/resize" "image" "image/jpeg" ) // 默认最大高度 const MaxHeight uint = 1080 // 当文件是JPEG格式时,对文件进行压缩。 // 压缩的方式主要是借助原生的image/jpeg

CHEENE 2987

使用go创建简单的图片

前言 这篇文章是学习记录,所诉内容应该是相对片面的,欢迎指正。 参考文章如下: https://www.cnblogs.com/msnsj/p/4242572.html https://studygolang.com/pkgdoc image接口 在go语言中文网中对image接口有如下描述: image实现了基本的2D图片库。 基本接口叫作Image。图片的色彩定义在image/color包。 Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数

z6y6t的博客 3690

golang后端动态生成图片、一文搞懂image/draw使用、一张图片粘贴到另一张图片上、根据url获取图片内容、在图片周围画线、invalidJPEGformat: missingSOImarke

golang image/draw 的使用

qq_40585384的博客 8832

golang创建gif图片代码

采用golang的image,image/gif包很容易创建gif图片,参考艾伦的书,写demo如下:package main import ( "image" "image/color" "image/gif" "os" ) var palette=[]color.Color{color.White,color.Black,color.RGBA{0x22,0xCC,0x33,0xff}...

dong_beijing的博客 2097

golang中image/jpeg包和image/png包用法

jpeg包实现了jpeg图片的编码和解码 func Decode(r io.Reader) (image.Image, error) //Decode读取一个jpeg文件,并将他作为image.Image返回 func DecodeConfig(r io.Reader) (image.Config, error) //无需解码整个图像,DecodeConfig变能够返回整个图像...

weixin_34021089的博客 2990

【Python AsciiArt】利用命令行打印出字符图案

利用字符串生成工具可以方便的打印出自己想要字符图案 我们在使用一些开源软件的时候,启动打开的字符图形很好看。于是搜索到了一些工具来实现: _____ _____ _____ _____ /\ \ ...

TomRen 1万+

生成linux启动logo脚本

#!/bin/sh pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm rm /mnt/hgfs/android_si/android210-kernel_v03/drivers/video/logo/logo_linux_clut224.* cp ./logo_linux_clut224.p

ConceptCon 1801
上一篇: go操作elasticsearch 如何打印query log
下一篇: 使用go 开发桌面应用,做了一个md编辑器
glfxml
博客等级 码龄19年 18粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值