Maison >développement back-end >Golang >Lire un tiff de plusieurs pages et extraire des images dans Golang

Lire un tiff de plusieurs pages et extraire des images dans Golang

PHPz
PHPzavant
2024-02-06 11:24:09609parcourir

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

Contenu de la question

Comment diviser un tiff de plusieurs pages en images dans Go ? DecodeAll of image/tiff renvoie un TIFF contenant image.image. Mais vous ne savez pas comment convertir chacun en image ?


Bonne réponse


Comme il n'y a pas beaucoup d'informations sur le package que vous avez utilisé dans votre question, je suppose que vous avez utilisé la méthode github.com/chai2010/tiff 模块。它只包含 decodeall. J'ai utilisé un tiff public de plusieurs pages. Ensuite, j'ai utilisé le code du package docs. Quoi qu'il en soit, je le cite ici

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)
        }
    }
}

Il crée plusieurs tif images selon vos besoins. J'espère que c'est ce que tu voulais dire

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer