在Golang中读取多页TIFF并提取图像

x6yk4ghg  于 2023-06-19  发布在  Go
关注(0)|答案(1)|浏览(219)

如何在go中将多页tiff分割成图像?image/tiff的DecodeAll返回TIFF,其中包含image. image。但不知道如何将它们转换成图像?

pqwbnv8z

pqwbnv8z1#

由于没有太多关于您在问题中使用的包的信息,我将假设您使用github.com/chai2010/tiff模块。它只包含DecodeAll方法。我使用了一个多页的tiff,这是公开可用的。然后我使用了包文档中的代码。不管怎样我在这里引用

package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "log"
    "path/filepath"

    "github.com/chai2010/tiff"
)

func main() {
    b, err := ioutil.ReadFile("Multi_page24bpp.tif")
    if err != nil {
        panic(err)
    }

    // Decode tiff
    m, errors, err := tiff.DecodeAll(bytes.NewReader(b))
    if err != nil {
        log.Println(err)
    }

    // Encode tiff
    for i := 0; i < len(m); i++ {
        for j := 0; j < len(m[i]); j++ {
            newname := fmt.Sprintf("%s-%02d-%02d.tif", filepath.Base("Multi_page24bpp.tif"), i, j)
            if errors[i][j] != nil {
                log.Printf("%s: %v\n", newname, err)
                continue
            }

            var buf bytes.Buffer
            if err = tiff.Encode(&buf, m[i][j], nil); err != nil {
                log.Fatal(err)
            }
            if err = ioutil.WriteFile(newname, buf.Bytes(), 0666); err != nil {
                log.Fatal(err)
            }
            fmt.Printf("Save %s ok\n", newname)
        }
    }
}

它按照您的要求创建了多个tif图像。我希望你是这个意思

相关问题