extractor

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2025 License: GPL-3.0 Imports: 5 Imported by: 1

README

palette-extractor

Go Report Card GoDoc

This program extracts the dominant color or a representative color palette from an image.

Usage

Here's a simple example, where we build a 5 color palette:

package main

import (
    "os"
    "fmt"
    "image"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"

    _ "golang.org/x/image/webp"

    "github.com/BeringLogic/palette-extractor"
)

func main() {
    // opening the image
    file, err := os.Open("image.png"); if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()

    // decoding the image
    img, _, err := image.Decode(file); if err != nil {
        fmt.Println(err)
        return
    }

    // Creating the extractor object
    extractor := extractor.NewExtractor(img, 10)

    // Displaying the top 5 dominant colors of the image
    fmt.Println(extractor.GetPalette(5))
}

You can find the complete documentation on GoDoc.

Example

The following image has been used for this example:

Example

The program will give the following output when used with the image above:

[[234 231 230] [208 24 44] [59 41 37] [158 149 145] [145 126 114]]

Thanks

Many thanks to Thomas Bouvier for his palette-extractor, from which this has been forked

Many thanks to Lokesh Dhakar for his original work and Shipeng Feng for his implementation.

Documentation

Overview

Package extractor extracts the dominant color or a representative color palette from an image.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Extractor

type Extractor struct {
	// contains filtered or unexported fields
}

Extractor represents the color palette extractor instance associated with a single image.

func NewExtractor

func NewExtractor(img image.Image, quality int) (*Extractor, error)

NewExtractor returns a new instance of an Extractor. The provider filename parameter can contain a path, and must include the file extension. The provided quality parameter behaves in the following manner: the bigger the number, the faster a color will be returned but the greater the likelihood that it will not be the visually most dominant color. 1 then refers the highest quality.

func (*Extractor) GetColor

func (extractor *Extractor) GetColor() []int

GetColor selects the dominant color. It corresponds to the first color in the palette. The color is returned as [r g b].

func (*Extractor) GetPalette

func (extractor *Extractor) GetPalette(count int) [][]int

GetPalette builds a color palette. We are using the median cut algorithm to cluster similar colors. The provided count parameter defines how many colors should be extracted. Each color is returned as [r g b].

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL