/optidash-go

The official Golang integration for Optidash API

Primary LanguageGoMIT LicenseMIT

Optidash

Optidash is a modern, AI-powered image optimization and processing API.
We will drastically speed-up your websites and save you money on bandwidth and storage.


The official Go integration for the Optidash API.


Documentation

See the Optidash API docs.

Installation

$ go get github.com/optidash-ai/optidash-go

Quick examples

Optidash API enables you to provide your images for optimization and processing in two ways - by uploading them directly to the API (Image Upload) or by providing a publicly available image URL (Image Fetch).

You may also choose your preferred response method on a per-request basis. By default, the Optidash API will return a JSON response with rich metadata pertaining to input and output images. Alternatively, you can use binary responses. When enabled, the API will respond with a full binary representation of the resulting (output) image. This Go integration exposes two convenience methods for interacting with binary responses: .toFile() and .toBuffer().

Image upload

Here is a quick example of uploading a local file for processing. It calls .toJSON() at a final step and instructs the API to return a JSON response.

package main

import (
    "fmt"
    "github.com/optidash-ai/optidash-go"
)

func main() {
    // Pass your Optidash API Key to the constructor
    opti, err := optidash.NewClient("your-api-key")

    if err != nil {
        panic(err)
    }

    // Upload an image from disk, resize it to 100 x 75,
    // automatically enhance, and adjust sharpness parameter.
    meta, err := opti.
        Upload("path/to/input.jpg").
        Optimize(optidash.P{
            "compression": "medium"
        }).
        Resize(optidash.P{
            "width": 100,
            "height": 75
        }).
        Auto(optidash.P{
            "enhance": true
        }).
        Adjust(optidash.P{
            "unsharp": 10
        }).
        ToJSON()

    if err != nil {
        panic(err)
    }

    // You'll find the full JSON metadata within the `meta` variable
}

Image fetch

If you already have your source visuals publicly available online, we recommend using Image Fetch by default. That way you only have to send a JSON payload containing image URL and processing steps. This method is also much faster than uploading a full binary representation of the image.

package main

import (
    "fmt"
    "github.com/optidash-ai/optidash-go"
)

func main() {
    // Pass your Optidash API Key to the constructor
    opti, err := optidash.NewClient("your-api-key")

    if err != nil {
        panic(err)
    }

    // Provide a publicly available image URL with `fetch()` method,
    // apply Gaussian blur using highly optimized PNG as the output format.
    // We'll also use `toFile()` method and stream the output image to disk
    meta, err := opti.
        Fetch("https://www.website.com/image.jpg").
        Optimize(optidash.P{
            "compression": "medium"
        }).
        Filter(optidash.P{
            "blur": optidash.P{
                "mode": "gaussian",
                "value": 10
            }
        }).
        Output(optidash.P{
            "format": "png"
        }).
        ToFile("path/to/output.png")

    if err != nil {
        panic(err)
    }

    // You'll find the full JSON metadata within the `meta` variable
}

License

This software is distributed under the MIT License. See the LICENSE file for more information.