首頁 >後端開發 >Golang >在 golang 中讀取多頁 tiff 並提取圖像

在 golang 中讀取多頁 tiff 並提取圖像

PHPz
PHPz轉載
2024-02-06 11:24:09611瀏覽

在 golang 中读取多页 tiff 并提取图像

問題內容

如何在 Go 中將多頁 tiff 分割成影像? image/tiff 的 DecodeAll 傳回 TIFF,其中包含 image.image。但不知道如何將每個轉換為圖像?


正確答案


由於關於您在問題中使用的軟體包的資訊不多,我假設您使用了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 圖像。我希望這就是你的意思

以上是在 golang 中讀取多頁 tiff 並提取圖像的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除