ImageWizard
ยป Image processing webservice based on ASP.NET Core and ImageSharp / SkiaSharp


  • Based on ASP.NET and ImageSharp / SkiaSharp / SvgNet / DocNET
  • Different data loaders: Http, File, YouTube (thumbnail), Gravatar, OpenGraph
  • Different data caches: File, Distributed cache, MongoDB cache
  • Image filters: resize, crop, rotate,..
  • Common image effects like grayscale and blur are available
  • Pdf filters: page-to-image for documents
  • Url is protected by a HMACSHA256 signature to prevent DDoS attacks
  • Can handle the device pixel ratio (DPR)
  • Support for cache control and ETag
  • Enable range processing by http request
  • Use RecyclableMemoryStream for smarter memory management (IStreamPool)

Use the standalone version or middleware.

Go to GitHub

OpenGraph loader

@Url.ImageWizard().OpenGraph("https://github.com/usercode/ImageWizard").BuildUrl()

/image/RLdYVH5q5ILLhULj1ZeRnoSjqzKoc884dczXZeP7mRY/opengraph/https://github.com/usercode/ImageWizard

Screenshot loader

@Url.ImageWizard().Screenshot("https://github.com").BuildUrl()

/image/y7m69eoNHjwBf9q7_WS-9A6wySLPryNiM28GVzO3-M8/screenshot/https://github.com

SVG transforming

@Url.ImageWizard().FetchLocalFile("img/dot-net-core.svg").BuildUrl()

/image/d2xAWsR-GMmn-d1db7gVoDLy2bsQ7rUNekQV057RTVI/fetch/img/dot-net-core.svg?v=6ba7IO3mY1xd9WBsZ2ITk4MsJXqLdFYsupV8rugPuVI

Original (width=100px, height=100px)

RemoveSize()

Rotate(45.0)

Blur()

Grayscale()

Invert()

Saturate(0.3)

ImageSharp filters

resize(400,800,pad)

resize(400,800,crop)

resize(400,800,stretch)

resize(400,800,min)

resize(400,800,max)

blackwhite()

Grayscale()

blur()

rotate(90.0)

rotate(180.0)

rotate(270.0)

flip(vertical)

flip(horizontal)

invert()

brightness(0.5)

brightness(0.5)

crop(0.17, 0.22, 0.3, 0.3)

Fetch local file (from wwwroot folder)

@Url.ImageWizard().FetchLocalFile("img/meerkat.jpg").AsImage().Resize(400,400).BuildUrl()

/image/44hssHNnp6OUzVQU0fdvXPNNdcPnoMc8-pv8R61REGI/resize(400,400)/fetch/img/meerkat.jpg?v=nacIKYKbjrkYZaKKrDiyElKP8lDBk3vITmMEzT57G10

Fetch remote image

@Url.ImageWizard().Fetch("https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png").AsImage().Resize(400,400).BuildUrl()

/image/m5XlyeD7xTdSSl0Z0okuWbKBbB4LK2gDfcWLiFw9e5o/resize(400,400)/fetch/https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png

Default

Grayscale

Blur

DPR (Device Pixel Ratio)

@Url.ImageWizard().Fetch("lion.jpg").AsImage().DPR(1).Resize(100,100).BuildUrl()

/image/BQf6DU7s0QEgZAz--ohcsrH6XzvuGcQKMSFDNTfT6OY/dpr(1.0)/resize(100,100)/fetch/lion.jpg

DPR 1.0

DPR 2.0

DPR 3.0

Use file provider (IFileProvider)

@Url.ImageWizard().File("img/meerkat.jpg").AsImage().Resize(400,400).BuildUrl()

/image/XIdDdN1gEAn5BQqkGxLKcUPfeE56SHbcYI28azLVVmU/resize(400,400)/file/img/meerkat.jpg

Watermark

@Url.ImageWizard().FetchLocalFile("img/bat-eared-fox.jpg", 4).AsImage().Watermark().BuildUrl()

/image/FbpN9HJxh_j21GaSM8SRj1ETrlx7DLhnRBYw_rXAiFM/watermark()/fetch/img/bat-eared-fox.jpg?v=885O

Draw text

@Url.ImageWizard().FetchLocalFile("img/bat-eared-fox.jpg", 4).AsImage().Resize(400, 400).DrawText("bat-eared-fox", 65, 0.3, 0.1, false).BuildUrl()

/image/9inklw4KZhBzrjiMquExou7s-bO65MBG8ZGWDNd9j6Q/resize(400,400)/drawtext(text='bat-eared-fox',size=65,x=0.3,y=0.1)/fetch/img/bat-eared-fox.jpg?v=885O

Fetch youtube thumbnail

@Url.ImageWizard().Youtube("lzyWFew_w8Y").Resize(400,400).BuildUrl()

/image/RRjnkw3bhxeYrad564C6DE9uH0iwKj779QW9Z53FZzs/resize(400,400)/youtube/lzyWFew_w8Y

Default

Grayscale

Blur

Use youtube taghelper (DSGVO friendly)

<youtube video-id="AQHZQ8p6FCA" width="1920" height="1080" grayscale="true" blur="true" use-no-cookie="true" />

Fetch gravatar image

@Url.ImageWizard().Gravatar("MyEmailAddress@example.com").Resize(200,200).BuildUrl()

/image/Mde27ex0B1GxokQYQHxznOWnuoiu-SD06d1H_nRwrXM/resize(200,200)/gravatar/0bc83cb571cd1c50ba6f3e8a78ef1346

Default

Grayscale

Blur

PDF (page to image)

@Url.ImageWizard().FetchLocalFile("/pdf/earth.pdf").AsPdf().PageToImage(0).BuildUrl()

/image/o0M60vZGlzGCzQNKJ_EmB3werusVyyixUwQhqvvregI/pagetoimage(0)/fetch/pdf/earth.pdf?v=3ysThB86xXlesM99dEIcamnfEk3jBq9T2N7hvM327sg

OpenStreetMap

Use as relay to openstreetmap server.