Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Baca tiff berbilang halaman dan ekstrak imej dalam golang

Baca tiff berbilang halaman dan ekstrak imej dalam golang

PHPz
PHPzke hadapan
2024-02-06 11:24:09580semak imbas

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

Kandungan soalan

Bagaimana untuk membahagikan tiff berbilang halaman kepada imej dalam Go? DecodeSemua imej/tiff mengembalikan TIFF yang mengandungi image.image. Tetapi tidak tahu bagaimana untuk menukar setiap satu kepada imej?


Jawapan betul


Memandangkan tidak banyak maklumat tentang pakej yang anda gunakan dalam soalan anda, saya mengandaikan anda menggunakan kaedah github.com/chai2010/tiff 模块。它只包含 decodeall. Saya menggunakan tiff berbilang halaman awam. Kemudian saya menggunakan kod dari pakej docs. Anyway, saya citer kat sini

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

Ia mencipta berbilang tif imej mengikut keperluan anda. Saya harap ini yang anda maksudkan

Atas ialah kandungan terperinci Baca tiff berbilang halaman dan ekstrak imej dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam