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/a94Qk34kRiUIzskH1sCD0R3Dhou87YQ2HqYrO6XEFUI/opengraph/https://github.com/usercode/ImageWizard

Image

Screenshot loader

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

/image/HkXw14Mt7-VS5yddteYyhLEWiYkhxVXOUIJSyPwW2Sc/screenshot/https://github.com

Image

SVG transforming

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

/image/6exT9zOqv1332YudY02KCJBAQfK0Rbt_ZBE12idnmCE/fetch/img/dot-net-core.svg?v=81vfths0

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

Image

RemoveSize()

Image

Rotate(45.0)

Image

Blur()

Image

Grayscale()

Image

Invert()

Image

Saturate(0.3)

Image

Combine filters (grayscale, rotate, invert)

Image

ImageSharp filters

resize(400,800,pad)

Image

resize(400,800,crop)

Image

resize(400,800,stretch)

Image

resize(400,800,min)

Image

resize(400,800,max)

Image

blackwhite()

Image

Grayscale()

Image

blur()

Image

rotate(90.0)

Image

rotate(180.0)

Image

rotate(270.0)

Image

flip(vertical)

Image

flip(horizontal)

Image

invert()

Image

brightness(0.5)

Image

brightness(0.5)

Image

crop(0.17, 0.22, 0.3, 0.3)

Image

Fetch local file (from wwwroot folder)

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

/image/j1JBt9BAw5UuW3ne8Nm4yLH0JHZOlLU807865SccWRg/resize(400,400)/fetch/img/meerkat.jpg?v=cwVks1Nk

Image
Image
Image

Fetch remote image

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

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

Image

Default

Image

Grayscale

Image

Blur

Placeholder

@Url.ImageWizard().Placeholder(600, 300).BuildUrl()

/image/FfdQUtg_EySoo-frH7j2jjcKBTI_sUf2iRTW-nygAIE/placeholder/600x300

Image

600x300

DPR (Device Pixel Ratio)

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

/image/yhQoLMBzec3cnljWUwqAF37ofHxJI0_p3xjjULO3hJ8/dpr(1.0)/resize(100,100)/fetch/lion.jpg

Image

DPR 1.0

Image

DPR 2.0

Image

DPR 3.0

Use file provider (IFileProvider)

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

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

Image
Image
Image

Watermark

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

/image/vGaWpk57vfLB73r2iPvu3hQRhzg4bRjZOFk6ipj9EH8/watermark()/fetch/img/bat-eared-fox.jpg?v=n-0T

Image

Fetch youtube thumbnail

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

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

Image

Default

Image

Grayscale

Image

Blur

Use youtube taghelper (GDPR friendly)

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

Fetch gravatar image

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

/image/7UT2TawB34srzF3MRXwa_1AulTbrq8n86IOoE1PT8LQ/resize(200,200)/gravatar/0bc83cb571cd1c50ba6f3e8a78ef1346

Image

Default

Image

Grayscale

Image

Blur

PDF (page to image)

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

/image/SWkfuMQXXasgDJNyeU7W63mVKTn_jkB9lKP1Ue3ARsM/pagetoimage(0)/fetch/pdf/earth.pdf?v=9QaPSYkf

Image

OpenStreetMap

Use as relay to openstreetmap server.