Tharga.Team.Images
3.12.0
dotnet add package Tharga.Team.Images --version 3.12.0
NuGet\Install-Package Tharga.Team.Images -Version 3.12.0
<PackageReference Include="Tharga.Team.Images" Version="3.12.0" />
<PackageVersion Include="Tharga.Team.Images" Version="3.12.0" />
<PackageReference Include="Tharga.Team.Images" />
paket add Tharga.Team.Images --version 3.12.0
#r "nuget: Tharga.Team.Images, 3.12.0"
#:package Tharga.Team.Images@3.12.0
#addin nuget:?package=Tharga.Team.Images&version=3.12.0
#tool nuget:?package=Tharga.Team.Images&version=3.12.0
Tharga.Team.Images
Image processing for Tharga Team icons. Registers an IIconProcessor (backed by
SkiaSharp) that squares and downscales uploaded icons,
instead of rejecting ones larger than the configured maximum.
Registration
builder.Services.AddThargaImageProcessing();
The built-in icon store runs the processor before validating/storing. Any uploaded image (team or user)
is fitted within IconOptions.MaxDimension (default 256px), squared by padding the short side
with transparency, and re-encoded as PNG. Formats Skia can't decode (e.g. SVG) pass through
unchanged, as do images that are already square and within the box.
Content is never cropped and never upscaled. The output side is min(max(width, height), MaxDimension):
| Source | Output | Why |
|---|---|---|
| 1000×500 | 256×256 | scaled to 256×128, then padded |
| 100×50 | 100×100 | already fits, so padded only — no pixel is invented |
| 300×300 | 256×256 | square, but larger than the box |
| 100×100 | unchanged | square and within bounds |
Squaring exists so avatar surfaces that reserve a square box stop letterboxing wide and tall sources inconsistently. Cropping would square them too, and is exactly what to avoid — it takes a face out of a portrait photo.
Behaviour change. Before this, output preserved the source aspect ratio, so a 1000×500 upload was stored as 256×128. New uploads are now squared. Already-stored icons are not reprocessed — only images uploaded from here on change shape.
Configure the maximum via the platform options:
builder.AddThargaTeam(o => o.Icon.MaxDimension = 256);
Platform support and licensing
Nothing to install. The package references SkiaSharp.NativeAssets.Linux.NoDependencies itself, so a
Linux host needs no fontconfig or libfreetype, and slim or Alpine containers work as-is. That
dependency is taken here rather than left to you deliberately: a missing native asset builds cleanly and
fails at upload time in production, which is the one failure a package reference can rule out entirely.
SkiaSharp is MIT, as is this package. Versions 3.10 and earlier used ImageSharp, which is distributed under the Six Labors Split Licence and requires a paid commercial licence for closed-source for-profit use above $1M annual gross revenue. If you took a Six Labors licence on this package's account, you no longer need one for it.
Upgrading from 3.10 or earlier
ImageSharpIconProcessor is now SkiaIconProcessor. If you call AddThargaImageProcessing() — which
is what the docs have always shown — nothing changes. Only code that registered the type by hand needs the
new name:
services.AddScoped<IIconProcessor, SkiaIconProcessor>(); // was ImageSharpIconProcessor
Output is unchanged: same squaring, same no-upscale rule, same transparent padding, same pass-through for undecodable formats. Stored icons are not reprocessed.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Options (>= 10.0.10)
- SkiaSharp (>= 4.151.1)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 4.151.1)
- Tharga.Team (>= 3.12.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.12.0 | 0 | 8/10/2026 |
| 3.10.9 | 37 | 8/9/2026 |
| 3.10.8 | 45 | 8/9/2026 |
| 3.10.7 | 47 | 8/7/2026 |
| 3.10.6 | 48 | 8/7/2026 |
| 3.10.5 | 101 | 8/4/2026 |
| 3.10.4 | 97 | 8/3/2026 |
| 3.10.3 | 94 | 8/2/2026 |
| 3.10.2 | 90 | 8/2/2026 |
| 3.10.1 | 88 | 8/2/2026 |
| 3.10.0 | 96 | 8/1/2026 |
| 3.9.0 | 91 | 8/1/2026 |
| 3.8.3 | 95 | 8/1/2026 |
| 3.8.2 | 95 | 8/1/2026 |
| 3.8.1 | 99 | 7/31/2026 |
| 3.8.0 | 96 | 7/31/2026 |
| 3.7.0 | 94 | 7/30/2026 |
| 3.6.1 | 90 | 7/27/2026 |
| 3.6.0 | 105 | 7/27/2026 |
| 3.5.4 | 89 | 7/27/2026 |