GleamTech.ImageUltimate
7.1.0
dotnet add package GleamTech.ImageUltimate --version 7.1.0
NuGet\Install-Package GleamTech.ImageUltimate -Version 7.1.0
<PackageReference Include="GleamTech.ImageUltimate" Version="7.1.0" />
<PackageVersion Include="GleamTech.ImageUltimate" Version="7.1.0" />
<PackageReference Include="GleamTech.ImageUltimate" />
paket add GleamTech.ImageUltimate --version 7.1.0
#r "nuget: GleamTech.ImageUltimate, 7.1.0"
#:package GleamTech.ImageUltimate@7.1.0
#addin nuget:?package=GleamTech.ImageUltimate&version=7.1.0
#tool nuget:?package=GleamTech.ImageUltimate&version=7.1.0
ImageUltimate is an ASP.NET Image resizer and a .NET Image Processor
which supports ASP.NET Core 5.0+, ASP.NET Core 2.1+, ASP.NET MVC 3.0+ and ASP.NET WebForms 4.7.2+ web applications/web sites.
ImageUltimate can also be used for conversion between several image formats
with .NET 5.0+ or .NET Core 3.1 and .NET Framework 4.7.2+ console/desktop applications.
Features:
- Can load and save many image file formats (raster, vector and camera raw).
- Provides a fluent interface for easily chaining image manipulation commands.
- Vastly faster (10x) than System.Drawing namespace and optimized specifically for web use.
Minimal memory usage and the ability to process very large images in a fast manner.
- Provides detailed information about an image file like format, size, DPI, pixel format and metadata like EXIF and IPTC.
- Fast thumbnail generation, smartly looks for a EXIF thumbnail, removes black stripes above and below it and
resizes it down further if needed.
- Provides these image transforms: Resize, LiquidResize (seam carving), Crop, TrimBorders, Rotate, Flip.
- Provides these image color/tone corrections and filters: Brightness, Contrast, Enhance, Blur, Sharpen.
- Caches generated images both on server and browser with a smart versioning algorithm. A unique and browser-cacheable url is generated according to the chained commands and whenever you change these commands (or modify the source image externally), the url will vary and this will cause browser to automatically detect changes (no need to press F5).
- Generates SEO friendly urls. By default the file name of the source image is used but it's possible to override this file name for SEO purposes.
- Single managed DLL (works both on 32-bit and 64-bit) for easy deployment and no dependencies. No messy Web.config settings. Just drop it in your bin folder and you are ready to go.
- Strongly-typed API for web, no need to learn and memorize messy url querystring parameters, just chain commands with the help of intellisense.
ASP.NET MVC usage example:
@this.ImageTag("Image1.jpg", task => task.ResizeWidth(300))
ASP.NET WebForms usage example:
<%=this.ImageTag("Image1.jpg", task => task.ResizeWidth(300)) %>
General usage examples:
using (var imageTask = new ImageTask(@"C:\Pictures\Picture1.jpg"))
imageTask.ResizeWidth(300).Save(@"C:\Output\Picture2.jpg");
Note: This package contains a fully working version of the product, however without a license key it will run in trial mode. This means after 30 days, the generated images will be watermarked with a red "ImageUltimate" text at the bottom right corner.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- GleamTech.Common (>= 7.1.0)
-
.NETStandard 2.0
- GleamTech.Common (>= 7.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on GleamTech.ImageUltimate:
| Package | Downloads |
|---|---|
|
GleamTech.FileUltimate
FileUltimate is an ASP.NET File Manager and Uploader which supports ASP.NET Core 5.0+, ASP.NET Core 2.1+, ASP.NET MVC 3.0+ and ASP.NET WebForms 4.7.2+ web applications/web sites. Integrate a file manager into your ASP.NET application or site rapidly. - Browse and manage files with access control. - Accept files with the advanced upload functionality. - Offer a structured and neat download area. - Preview documents (70+ file formats, including PDF © Microsoft Office), images, audios and videos. Note: This package contains a fully working version of the product, however without a license key it will run in trial mode. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.1.0 | 0 | 4/24/2026 |
| 7.0.0 | 330 | 4/7/2026 |
| 6.6.9 | 2,620 | 12/23/2025 |
| 6.6.8 | 2,199 | 12/18/2025 |
| 6.6.7 | 2,476 | 10/21/2025 |
| 6.6.6 | 2,466 | 10/2/2025 |
| 6.6.5 | 2,371 | 9/26/2025 |
| 6.6.2 | 2,500 | 9/11/2025 |
| 6.6.1 | 2,519 | 9/1/2025 |
| 6.6.0 | 2,542 | 8/27/2025 |
| 6.5.4 | 31,514 | 7/3/2025 |
| 6.5.3 | 33,300 | 5/6/2025 |
| 6.5.2 | 33,525 | 4/18/2025 |
| 6.5.1 | 33,345 | 4/12/2025 |
| 6.5.0 | 33,269 | 4/2/2025 |
| 6.4.5 | 32,993 | 3/30/2025 |
| 6.4.0 | 34,661 | 3/8/2025 |
| 6.3.1 | 33,115 | 3/4/2025 |
| 6.3.0 | 34,562 | 1/7/2025 |
| 6.2.0 | 33,962 | 12/1/2024 |
## Version 7.1.0 - April 24, 2026
- **Fixed:** The fix back in `Version 6.5.1 - April 11, 2025` for parsing `Referer` http header was not sufficient.
This warning was occasionally recorded in server's Event Log:
`This operation is not supported for a relative URI.`
- **Improved:** Ensured stability of cookieless session feature for iframe with a cross-domain URL.
This feature (`GleamTechWebConfiguration.AutoCookielessSessionEnabled`) was first added in `Version 4.4.1 - November 23, 2020`.
- **Added:** `GleamTechWebConfiguration.PathBaseForSessionEnabled` property that specifies whether
to use request PathBase (correct cased application virtual path) for session cookie and not default path `/`.
The default value is `true` so it's active by default.
The problem with ASP.NET Core session is, if for example you have 2 app instances on the same domain:
1. First visit to `/MyApp1`, the session cookie is created and set (with cookie path `/`).
2. Then visit to `/MyApp2`, the session cookie exists (with cookie path `/`)
but this app cannot decrypt it because their key ring is not shared.
This causes unnecessary `Error unprotecting the session cookie` warnings in server's Event Log.
A new session cookie is still created but the problem is the logging in `CookieProtection.Unprotect()` on exception.
In ASP.NET classic, session cookie path also defaults to `/` and not to the application virtual path,
though this does not cause a warning/error, but you get a new empty session with the existing session cookie.
So, the best solution is to use correct cased application virtual path as session cookie path when available
and not the default path `/`, to isolate session of all app instances on the same domain, for example:
```
ApplicationVirtualPath: /DocumentUltimate/AspNetWebFormsCS ❌ (IIS canonical casing)
Request.Path: /documentultimate/aspNetWebFormsCS/Page.aspx ✔ (actual request casing)
PathBase (correct cased): /documentultimate/aspNetWebFormsCS
```
Cookie paths are case-sensitive so when not using the default path `/`,
we ensure PathBase used for cookie path is correct cased (cased same as the one user typed in address bar).
However, if you want to share the session cookie across all app instances on the same domain,
set this to `false` (default ASP.NET Session behavior).
- **Improved:** Normally, to have Session cookie work properly for an ASP.NET Core app hosted in IIS,
"Load User Profile" property should be set to true for application pool used for that app.
However for convenience, we will now use `Keys` subfolder under `GleamTechConfiguration.TemporaryFolder`
by default in `AddGleamTech()` if `KeyManagementOptions.XmlRepository` is not explicitly set
and if app is not hosted in Azure Apps.
This is because if keys can not be persisted to a writable directory, they are stored in-memory
and when the process shuts down (or application pool is recycled), all generated keys are lost.
As a result, these unnecessary warnings are recorded in server's Event Log:
```
No XML encryptor configured. Key {guid} may be persisted to storage in unencrypted form.
Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.
Using an in-memory repository. Keys will not be persisted to storage.
The antiforgery token could not be decrypted.
Error unprotecting the session cookie.
The key {guid} was not found in the key ring.
```
This way even if "Load User Profile" property is set to false, we will fix default ASP.NET behavior
and avoid warnings spamming server's Event Log.