Skip to main content

CreateImage

Generate an image from a template with optional modifications.
func (c *BannerifyClient) CreateImage(
    ctx context.Context,
    templateID string,
    opts *CreateImageOptions,
) Response

Parameters

ctx
context.Context
required
Context for the request
templateID
string
required
The template ID (e.g., ‘tpl_xxxxxxxxx’)
opts
*CreateImageOptions
Optional configuration

Returns

Returns a Response struct with either Result or Error:
type Response struct {
    Result interface{} // []byte containing image data
    Error  *ErrorResponse
}

Examples

Basic Image Generation

package main

import (
    "context"
    "os"
    
    "github.com/bannerify/bannerify-go"
)

func main() {
    client := bannerify.NewBannerifyClient("your-api-key")
    
    result := client.CreateImage(context.Background(), "tpl_xxxxxxxxx", nil)
    
    if result.Error == nil {
        imageData := result.Result.([]byte)
        os.WriteFile("output.png", imageData, 0644)
    }
}

With Modifications

result := client.CreateImage(ctx, "tpl_xxxxxxxxx", &bannerify.CreateImageOptions{
    Modifications: []bannerify.Modification{
        {Name: "title", Text: "Welcome to Bannerify"},
        {Name: "subtitle", Text: "Generate images at scale"},
        {Name: "logo", Src: "https://example.com/logo.png"},
    },
})

Generate SVG

result := client.CreateImage(ctx, "tpl_xxxxxxxxx", &bannerify.CreateImageOptions{
    Format: "svg",
    Modifications: []bannerify.Modification{
        {Name: "title", Text: "SVG Output"},
    },
})

if result.Error == nil {
    svgData := result.Result.([]byte)
    os.WriteFile("output.svg", svgData, 0644)
}

Generate Thumbnail

result := client.CreateImage(ctx, "tpl_xxxxxxxxx", &bannerify.CreateImageOptions{
    Thumbnail: true,
})

Error Handling

result := client.CreateImage(ctx, "tpl_xxxxxxxxx", &bannerify.CreateImageOptions{
    Modifications: []bannerify.Modification{
        {Name: "title", Text: "Test"},
    },
})

if result.Error != nil {
    fmt.Printf("Error Code: %s\n", result.Error.Error.Code)
    fmt.Printf("Message: %s\n", result.Error.Error.Message)
    fmt.Printf("Documentation: %s\n", result.Error.Error.Docs)
} else {
    imageData := result.Result.([]byte)
    os.WriteFile("output.png", imageData, 0644)
}

Use Cases

Dynamic Marketing Banners

products := []struct {
    Name  string
    Price string
    Image string
}{
    {"Product A", "$29.99", "https://example.com/a.jpg"},
    {"Product B", "$39.99", "https://example.com/b.jpg"},
}

for i, product := range products {
    result := client.CreateImage(ctx, "tpl_product_banner", &bannerify.CreateImageOptions{
        Modifications: []bannerify.Modification{
            {Name: "product_name", Text: product.Name},
            {Name: "price", Text: product.Price},
            {Name: "product_image", Src: product.Image},
        },
    })
    
    if result.Error == nil {
        imageData := result.Result.([]byte)
        os.WriteFile(fmt.Sprintf("banner_%d.png", i), imageData, 0644)
    }
}

Social Media Posts

import "time"

result := client.CreateImage(ctx, "tpl_social_post", &bannerify.CreateImageOptions{
    Modifications: []bannerify.Modification{
        {Name: "headline", Text: "New Blog Post!"},
        {Name: "author", Text: "John Doe"},
        {Name: "date", Text: time.Now().Format("January 2, 2006")},
    },
})

Toggle Visibility

func boolPtr(b bool) *bool {
    return &b
}

result := client.CreateImage(ctx, "tpl_xxxxxxxxx", &bannerify.CreateImageOptions{
    Modifications: []bannerify.Modification{
        {Name: "watermark", Visible: boolPtr(false)},
        {Name: "badge", Visible: boolPtr(true)},
    },
})