# go-img-split-merge **Repository Path**: sftec/go-img-split-merge ## Basic Information - **Project Name**: go-img-split-merge - **Description**: Go语言的图片切分与合并包。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-03 - **Last Updated**: 2022-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-img-split-merge ## 是什么 golang版本的图片切分与合并工具。 ## 有啥用 - [x] 将某个目录下同一种格式(同为jpg,或者同为png)的图片,按照序号,在垂直(v)或者水平(h)方向,进行合并,拼接为一张图片; - [x] 将一张给定路径的图片,在垂直(v)或者水平(h)方向上,按照给定的切分数量,切分为小图; - [x] 将一张给定路径的图片,切分为九宫格; - [x] 图片的合并和切分,支持在jpg,png之间格式互转; ## 咋用 下面是个例子: ```go package main import ( "log" imgsm "gitee.com/sftec/go-img-split-merge" "os" "path/filepath" ) func main() { /* 测试类型: merge split split2 all */ testType := "merge" var err error cwd, _ := os.Getwd() if testType == "merge" || testType == "all" { //给定目录下,以序号为文件名的文件,将会被合并为一张 baseDir := filepath.Join(cwd, "imgs-for-merge/") min := 1 //从给定目录下的名字为1.jpg或者1.png的图片开始 max := 8 //合并到给定目录下名字为8.jpg或者8.png的图片; srcImgType := "jpg" //要被合并的图片的类型 targetImgType := "png" // 合并后的目标图片的类型 //给定目录下,以序号为文件名的文件,将会被合并为一张 //合并方向: v或者V是垂直方向合并;h或H是水平方向合并; direction := "v" err = imgsm.Merge(baseDir, srcImgType, targetImgType, direction, min, max) if err != nil { log.Println("===Merge Error===") log.Fatalln(err.Error()) } log.Println("===Merge Done!===") } /* 原图2.64M; 切分为8份; jpg格式,90%的质量,压缩到了666KB; png格式,CompressionLevel: png.BestCompression,变大到了6.31MB. 结论: 最好采用jpg格式。 */ if testType == "split" || testType == "all" { targetDir := filepath.Join(cwd, "img-for-split/") //切分后的图片,存放在哪个目录 srcImgType := "jpg"//要被切分的图片的类型 srcImgPath := filepath.Join(targetDir, "src"+"."+srcImgType)//要被切分的图片的路径 direction := "v" //切分方向: v或者V是垂直方向切分;h或H是水平方向切分; splitCount := 8 //将图片切分多少份 targetImgType := "jpg"//切分后的图片的类型 err = imgsm.Split(targetDir, srcImgPath, direction, splitCount, srcImgType, targetImgType) if err != nil { log.Fatalln(err.Error()) } log.Println("===Split Done!===") } if testType == "split2" || testType == "all" { //垂直,水平方向切分,不能满足需求,还应该来一个九宫格切分; srcImgType := "png" //要被切分的图片的格式 targetImgType := "jpg" //切分后的图片的格式 targetDir := filepath.Join(cwd, "img-for-split-2/") //切分后的图片在哪个目录/路径下 srcImgPath := filepath.Join(targetDir, "src"+"."+srcImgType) //把给定图片,切分为九宫格 err := imgsm.SplitTo9(srcImgPath, srcImgType, targetImgType, targetDir) if err != nil { log.Fatalln(err.Error()) } log.Println("===SplitTo9 Done!===") } } /* go run main.go */ ```