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 GitHubOpenGraph loader
@Url.ImageWizard().OpenGraph("https://github.com/usercode/ImageWizard").BuildUrl()
/image/r8ZsCnOX0zH_egEYW307a-I8RhCw1MFuJxEOi0U2KcE/opengraph/https://github.com/usercode/ImageWizard
Screenshot loader
@Url.ImageWizard().Screenshot("https://github.com").BuildUrl()
/image/Q5wwWHO2UEKVJHtiDOQXAntnvv7WmnF1gKl3t-EiBL4/screenshot/https://github.com
SVG transforming
@Url.ImageWizard().FetchLocalFile("img/dot-net-core.svg").BuildUrl()
/image/tEQVT7KkGI6Xnw2uqLqMIQJIvuPVFMJC_7u0zUzYYjY/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)
/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
resize(400,800,crop)
/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
resize(400,800,stretch)
/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
resize(400,800,min)
/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
resize(400,800,max)
/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
blackwhite()
/blackwhite()/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
Grayscale()
/grayscale()/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
blur()
/blur()/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
rotate(90.0)
/rotate(90.0)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
rotate(180.0)
/rotate(180.0)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
rotate(270.0)
/rotate(270.0)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
flip(vertical)
/flip(vertical)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
flip(horizontal)
/flip(horizontal)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
invert()
/invert()/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
brightness(0.5)
/brightness(0.5)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
brightness(0.5)
/contrast(0.5)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
crop(0.17, 0.22, 0.3, 0.3)
/resize(400,400)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
Fetch local file (from wwwroot folder)
@Url.ImageWizard().FetchLocalFile("img/meerkat.jpg").AsImage().Resize(400,400).BuildUrl()
/image/O1lXcDvBdU4LYhqMigm8bQ78NbM90BzXccS2dvdKtvs/resize(400,400)/fetch/img/meerkat.jpg?v=nacIKYKbjrkYZaKKrDiyElKP8lDBk3vITmMEzT57G10
/fetch/img/meerkat.jpg?v=nacIKYKbjrkYZaKKrDiyElKP8lDBk3vITmMEzT57G10)
/grayscale()/fetch/img/meerkat.jpg?v=nacIKYKbjrkYZaKKrDiyElKP8lDBk3vITmMEzT57G10)
/blur()/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/75jMVPjEiDcmair_pIHkrXjH0f-B0q79sXee9rm6R-w/resize(400,400)/fetch/https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png
/fetch/https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png)
Default
/grayscale()/fetch/https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png)
Grayscale
/blur()/fetch/https://upload.wikimedia.org/wikipedia/commons/b/b7/Europe_topography_map.png)
Blur
DPR (Device Pixel Ratio)
@Url.ImageWizard().Fetch("lion.jpg").AsImage().DPR(1).Resize(100,100).BuildUrl()
/image/qCg-iwU0ob_Etoz3LfQ9s6Kil-nPzJzy9-8zLab6seI/dpr(1.0)/resize(100,100)/fetch/lion.jpg
/resize(100,100)/fetch/img/lion.jpg?v=zMMvChzLnoXwS70RpjYbx9WgFC8qBjmsf_KBuREatTk)
DPR 1.0
/resize(100,100)/fetch/img/lion.jpg?v=zMMvChzLnoXwS70RpjYbx9WgFC8qBjmsf_KBuREatTk)
DPR 2.0
/resize(100,100)/fetch/img/lion.jpg?v=zMMvChzLnoXwS70RpjYbx9WgFC8qBjmsf_KBuREatTk)
DPR 3.0
Use file provider (IFileProvider)
@Url.ImageWizard().File("img/meerkat.jpg").AsImage().Resize(400,400).BuildUrl()
/image/c3uFg9rMKTK2TDMW_60tKAXpElprsPmelR4gQP3yn9c/resize(400,400)/file/img/meerkat.jpg
/file/img/meerkat.jpg)
/grayscale()/file/img/meerkat.jpg)
/blur()/file/img/meerkat.jpg)
Watermark
@Url.ImageWizard().FetchLocalFile("img/bat-eared-fox.jpg", 4).AsImage().Watermark().BuildUrl()
/image/HjDEPGm3pw8htZoAWrIgYr3oINmFRSfS3P9Pjk-rixw/watermark()/fetch/img/bat-eared-fox.jpg?v=885O
/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/npxbapUzioLAZMNw2_tbv7_b0AwdKTv9VTOjRKVnuMk/resize(400,400)/drawtext(text='bat-eared-fox',size=65,x=0.3,y=0.1)/fetch/img/bat-eared-fox.jpg?v=885O
/drawtext(text='bat eared fox',size=65,x=0.3,y=0.1)/fetch/img/bat-eared-fox.jpg?v=885O-a6SI6xSbTTOyCHFGQsHJWFkZoS2jbGkgNnHmw0)
Fetch youtube thumbnail
@Url.ImageWizard().Youtube("lzyWFew_w8Y").Resize(400,400).BuildUrl()
/image/usykU2JieZGhINGnmZkoHzKRbUfVTCkfVprvHPCZRmc/resize(400,400)/youtube/lzyWFew_w8Y
Default
Grayscale
Blur
Use youtube taghelper (DSGVO friendly)
Fetch gravatar image
@Url.ImageWizard().Gravatar("MyEmailAddress@example.com").Resize(200,200).BuildUrl()
/image/qNwlqGEVrIxQmpYtIWFU1yxcf4fv5iXxFKqUJI-JEGQ/resize(200,200)/gravatar/0bc83cb571cd1c50ba6f3e8a78ef1346
Default
Grayscale
Blur
PDF (page to image)
@Url.ImageWizard().FetchLocalFile("/pdf/earth.pdf").AsPdf().PageToImage(0).BuildUrl()
/image/VO_KQETHD5YlsvNal28JyfRT5Dhz5A4OWBCgUkSaZ40/pagetoimage(0)/fetch/pdf/earth.pdf?v=3ysThB86xXlesM99dEIcamnfEk3jBq9T2N7hvM327sg
OpenStreetMap
Use as relay to openstreetmap server.