Blazor Integration
Pixault provides a native Blazor component library (Pixault.Blazor) with interactive gallery, uploader, image detail, and transform manager components. These work with both Blazor Server and Blazor WebAssembly.
Source on GitHub
Installation
dotnet add package Pixault.Blazor
dotnet add package Pixault.Client
Setup
Register Pixault services in Program.cs:
builder.Services.AddPixault(options =>
{
options.BaseUrl = "https://img.pixault.io";
options.DefaultProject = "myapp";
options.ClientId = "px_cl_your_client_id";
options.ClientSecret = "pk_your_secret_key";
});
Components
PixaultGallery
A searchable, filterable image gallery with pagination and selection:
<PixaultGallery Project="myapp"
OnImageSelected="HandleImageSelected" />
@code {
private void HandleImageSelected(ImageMetadataDto image)
{
// Handle selection — show detail view, etc.
}
}
Features:
PixaultUploader
Drag-and-drop multi-file uploader with progress tracking:
<PixaultUploader Project="myapp"
OnUploadComplete="HandleUploadComplete" />
@code {
private void HandleUploadComplete(UploadCompleteEventArgs args)
{
// args.ImageId — the uploaded image ID
// args.Url — the original image URL
}
}
Features:
PixaultImageDetail
Display and edit image metadata:
<PixaultImageDetail Project="myapp"
Image="@selectedImage"
OnDeleted="HandleDeleted"
OnUpdated="HandleUpdated" />
@code {
private ImageMetadataDto? selectedImage;
private void HandleDeleted()
{
selectedImage = null;
}
private void HandleUpdated(ImageMetadataDto updated)
{
selectedImage = updated;
}
}
Features:
Image preview with responsive sizing
Metadata fields (alt, title, tags) with inline editing
Copy URL buttons for common transforms
Delete with confirmation
Video playback support
CRUD interface for named transforms:
<PixaultTransformManager Project="myapp" />
Features:
List all named transforms
Create new transforms with parameter builder
Visual preview of transform output
Lock/unlock individual parameters
Delete transforms
Full Dashboard Example
Combine components into a complete image management dashboard:
@page "/media"
<div style="display: flex; gap: 1.5rem;">
<div style="flex: 1;">
<PixaultGallery Project="myapp" OnImageSelected="OnSelect" />
</div>
@if (_selected is not null)
{
<div style="width: 380px;">
<PixaultImageDetail Project="myapp"
Image="_selected"
OnDeleted="OnDelete"
OnUpdated="OnUpdate" />
</div>
}
</div>
@code {
private ImageMetadataDto? _selected;
private void OnSelect(ImageMetadataDto image) => _selected = image;
private void OnDelete() => _selected = null;
private void OnUpdate(ImageMetadataDto updated) => _selected = updated;
}
Responsive Image Tag Helper
Build responsive <img> tags with srcset:
@inject PixaultImageService ImageService
@{
var srcset = string.Join(", ",
new[] { 400, 800, 1200 }.Select(w =>
$"{ImageService.Url(imageId).Width(w).Format(OutputFormat.WebP).Build()} {w}w"));
}
<img src="@ImageService.Url(imageId).Width(800).Format(OutputFormat.WebP).Build()"
srcset="@srcset"
sizes="(max-width: 600px) 400px, (max-width: 1024px) 800px, 1200px"
alt="@image.Alt"
loading="lazy" />
Oqtane Module
Since Oqtane is built on Blazor, Pixault components integrate natively as an Oqtane module. See the CMS Integration Guide for module configuration details.
11 March 2026