Categorygithub.com/ekonechny/gopenslide
modulepackage
0.0.0-20240313222548-0fde9d61c451
Repository: https://github.com/ekonechny/gopenslide.git
Documentation: pkg.go.dev

# README

OpenSlide binding for go

This library provides unofficial Golang bindings to OpenSlide and some helpers such as the deepzoom generator.

Installation

go get github.com/ekonechny/gopenslide

OSX

Install openslide

brew install OpenSlide

Create links

ln -s /opt/homebrew/include/openslide/openslide.h /usr/local/include
ln -s /opt/homebrew/include/openslide/openslide-features.h /usr/local/include

Export variables

export CPATH=/opt/homebrew/include
export LIBRARY_PATH=/opt/homebrew/lib

Linux

Export variables

export CGO_CFLAGS="-I/usr/local/include/openslide"
export LD_LIBRARY_PATH=/usr/local/lib

Usage

package main

import (
	"context"
	"flag"
	"fmt"
	"image/jpeg"
	"log"
	"os"

	"github.com/ekonechny/gopenslide"
)

func main() {
	var fp string
	flag.StringVar(&fp, "file", "", "file for deepzoom")
	flag.Parse()
	f, err := gopenslide.Open(fp)
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()
	generator := gopenslide.NewDeepZoomGenerator(f, 512, 0, false)
	for tile := range generator.Iter(context.Background()) {
		if err := os.MkdirAll(fmt.Sprintf("tiles/%d", tile.Level), 0777); err != nil {
			log.Fatal(err)
		}
		image, err := generator.Read(context.Background(), tile)
		if err != nil {
			log.Fatal(err)
		}
		tf, err := os.OpenFile(fmt.Sprintf("tiles/%d/%d_%d.jpg", tile.Level, tile.Col, tile.Row), os.O_CREATE|os.O_RDWR, 0777)
		if err != nil {
			log.Fatal(err)
		}
		if err = jpeg.Encode(tf, image, &jpeg.Options{
			Quality: 95,
		}); err != nil {
			log.Fatal(err)
		}
		if err = tf.Close(); err != nil {
			log.Fatal(err)
		}
	}
}

# Packages

No description provided by the author

# Functions

NewDeepZoomGenerator creates a DeepZoomGenerator wrapping an OpenSlide object.
No description provided by the author
ReadTileFromSlide Return an RGB Image for a tile.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author

# Structs

No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author