https://github.com/optidash-ai/optidash-go
The official Golang integration for Optidash API
https://github.com/optidash-ai/optidash-go
image-analysis image-manipulation image-optimization image-processing image-resizing optidash
Last synced: about 1 month ago
JSON representation
The official Golang integration for Optidash API
- Host: GitHub
- URL: https://github.com/optidash-ai/optidash-go
- Owner: optidash-ai
- License: mit
- Created: 2020-05-14T08:15:45.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-14T08:16:02.000Z (about 6 years ago)
- Last Synced: 2024-06-20T19:20:41.749Z (almost 2 years ago)
- Topics: image-analysis, image-manipulation, image-optimization, image-processing, image-resizing, optidash
- Language: Go
- Homepage: https://docs.optidash.ai
- Size: 16.6 KB
- Stars: 2
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://docs.optidash.ai).
### Installation
```bash
$ 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](https://docs.optidash.ai/requests/image-upload)) or by providing a publicly available image URL ([Image Fetch](https://docs.optidash.ai/requests/image-fetch)).
You may also choose your preferred [response method](https://docs.optidash.ai/introduction#choosing-response-method-and-format) on a per-request basis. By default, the Optidash API will return a [JSON response](https://docs.optidash.ai/responses/json-response-format) with rich metadata pertaining to input and output images. Alternatively, you can use [binary responses](https://docs.optidash.ai/responses/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.
```go
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.
```go
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](LICENSE) file for more information.