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

Screenshot loader

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

/image/PebVu1QMxYhskVIf7tc6DuGEouWaJeowY7jN4v9nrak/screenshot/https://github.com

SVG transforming

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

/image/-XAniP2x0gnVnANOrAcUdmfInv2u_Y35Ma4_vNqjBUs/fetch/img/dot-net-core.svg?v=JQDUYJdp

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

RemoveSize()

Rotate(45.0)

Blur()

Grayscale()

Invert()

Saturate(0.3)

Combine filters (grayscale, rotate, invert)

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/csHlbEkY9MeiAkEIyHLPdUAKTX8nS0CIgGpbM-6FEcs/resize(400,400)/fetch/img/meerkat.jpg?v=ruMCmWgs

Fetch remote image

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

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

Default

Grayscale

Blur

Placeholder

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

/image/sLcR8Y1FQb61Aw0g3vRl47iLK_w-n02YhiI6Dl68SO4/placeholder/600x300

600x300

DPR (Device Pixel Ratio)

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

/image/nY8Z2kMsLUzCpFPRVEzp3YXUFRTwVG96qAnqvJpZ5ks/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/FfdNvE-fRGg1KqYW9jYCE4nFJ3Hry577VbY_bqNDtQ4/resize(400,400)/file/img/meerkat.jpg

Watermark

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

/image/Rlua2Q3-jEkay1iH_HOsExs2NPCBpAQfDF38dwaiHsc/watermark()/fetch/img/bat-eared-fox.jpg?v=O8ad

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/ylTO-Brtdco4VRRdMCBJZtFdSMl8LHSji2U4IDSREno/resize(400,400)/drawtext(text='bat-eared-fox',size=65,x=0.3,y=0.1)/fetch/img/bat-eared-fox.jpg?v=O8ad

Fetch youtube thumbnail

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

/image/6XZWJ0a9a4DKWDZexlYEcCfHxo5Xs3ANDncinQeXUrQ/resize(400,400)/youtube/lzyWFew_w8Y

Default

Grayscale

Blur

Use youtube taghelper (GDPR 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/bgf9Aurtqh6HjX6578nPEL9nKyl5fraDqz2bTDW8pb4/resize(200,200)/gravatar/0bc83cb571cd1c50ba6f3e8a78ef1346

Default

Grayscale

Blur

PDF (page to image)

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

/image/5_OvKP5j_V-o0q8NQeiSYaZLKpJCZoyOrxA2FPPvsiQ/pagetoimage(0)/fetch/pdf/earth.pdf?v=VGCJTuIh

OpenStreetMap

Use as relay to openstreetmap server.