imgsm

package module
v0.0.0-...-0547978 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2022 License: GPL-3.0 Imports: 8 Imported by: 0

README

go-img-split-merge

是什么

golang版本的图片切分与合并工具。

有啥用

  • 将某个目录下同一种格式(同为jpg,或者同为png)的图片,按照序号,在垂直(v)或者水平(h)方向,进行合并,拼接为一张图片;
  • 将一张给定路径的图片,在垂直(v)或者水平(h)方向上,按照给定的切分数量,切分为小图;
  • 将一张给定路径的图片,切分为九宫格;
  • 图片的合并和切分,支持在jpg,png之间格式互转;

咋用

下面是个例子:


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

*/


Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Merge

func Merge(baseDir, srcImgType, targetImgType, direction string, min, max int) error

func Split

func Split(targetDir string, srcImgPath string, direction string, splitCount int, srcImgType, targetImgType string) error

func SplitTo9

func SplitTo9(srcImgPath string, srcImgType, targetImgType, targetDir string) error

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL