GleamTech.ImageUltimate 7.1.0

dotnet add package GleamTech.ImageUltimate --version 7.1.0
                    
NuGet\Install-Package GleamTech.ImageUltimate -Version 7.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GleamTech.ImageUltimate" Version="7.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GleamTech.ImageUltimate" Version="7.1.0" />
                    
Directory.Packages.props
<PackageReference Include="GleamTech.ImageUltimate" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GleamTech.ImageUltimate --version 7.1.0
                    
#r "nuget: GleamTech.ImageUltimate, 7.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package GleamTech.ImageUltimate@7.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=GleamTech.ImageUltimate&version=7.1.0
                    
Install as a Cake Addin
#tool nuget:?package=GleamTech.ImageUltimate&version=7.1.0
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed

## 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.