官网地址:
https://imageprocessor.org/imageprocessor-web/
一.ImageProcessor组件概述
ImageProcessor是用C#编写的轻量级库的集合,它允许你使用.NET 4.5+来动态地处理图像,包括两个主库ImageProcessor(用于桌面和应用程序使用)ImageProcessor.Web(ASP.NET构建的动态图像处理扩展),该组件快速,可扩展,易于使用,捆绑了一些很强大的功能,而且是完全开源。该组件有两个部分,我们今天将主要讲解ImageProcessor部分的内容,如果对另外一个感兴趣,可以自行了解。
ImageProcessor.Web向项目添加了一个可配置的HttpModule,允许对图像文件进行即时处理。该模块还提供了一个基于文件和浏览器的缓存,可以处理数百万的图像,增加处理输出和节省宝贵的服务器内存。该组件的功能方法包括:调整大小,旋转,圆角,翻转,裁剪,水印,过滤器,饱和度,亮度,对比度,质量,格式,小插曲,高斯模糊,高斯锐化和透明度。
ImageProcessor.Web的当前版本是4.8.2,可以下载源码和DLL文件(本人建议最好下载源码,好处就不在这里赘述)。
ImageProcessor.Web是ImageProcessor的Web扩展,允许开发人员使用Url API的查询字符串参数作为指令执行图像操作。此过程的输出是高度优化的网络,以确保web项目较高的性能。安装ImageProcessor.Web时,默认情况下,Web.config中添加配置节点,如下节点。
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" /></httpModules>
这允许库ImageProcessingModule拦截本地图像处理请求。ImageProcessor.Web是高度可配置的。可以将其他配置文件添加到解决方案中,以便从多个来源检索,处理和缓存图像。对于该组件的配置设置可以查看文档。
二.ImageProcessor组件操作概述
介绍了组件的相关信息,在这里介绍一下该组件的操作实例。ImageFactory类提供了对给定图像执行各种操作功能的方法。它经过精心设计以防止在以高性能方式处理图像时通常发生的各种内存泄漏。这使其可以安全地在桌面和Web环境中使用。ImageFactory自动检测给定图像的正确文件类型,并且该类的API是流畅的,这允许您轻松地链接方法以提供所需的输出。例如,以下代码加载,调整大小,设置新格式并保存包含图像信息的MemoryStream。
public static void Image(string file)
{
if (string.IsNullOrEmpty(file))
{
throw new ArgumentNullException(file);
}
byte[] photoBytes = System.IO.File.ReadAllBytes(file);
// 检测格式
ISupportedImageFormat format = new JpegFormat { Quality = 70 };//格式还有PngFormat
Size size = new Size(150, 0);
using (MemoryStream inStream = new MemoryStream(photoBytes))
{
using (MemoryStream outStream = new MemoryStream())
{
// 使用重载初始化ImageFactory以保留EXIF元数据。
using (ImageFactory imageFactory = new ImageFactory(true))
{
// 加载,调整大小,设置格式和质量并保存图像。
imageFactory.Load(inStream)
.Resize(size)
.Format(format)
.Save(outStream);
//对获取的imageFactory对象进行对应的操作
}
//对获取的数据流进行操作
}
}
上面是转换图片格式为jpeg。
对于图片的操作,具体有较多的操作方式,具体的方法有如下的方法:
方法名称 | 方法操作说明 |
Reset | 将当前图像重置为其原始加载状态 |
Alpha | 更改当前图像的不透明度 |
AutoRotate | 执行自动旋转以确保反映EXIF定义的旋转最终图像 |
BitDepth | 改变当前图像的位深度 |
Brightness | 更改当前图像的亮度 |
BackgroundColor | 更改当前图像的背景颜色 |
Constrain | 约束当前图像,调整其大小以适合给定的尺寸,同时保持其纵横比 |
Contrast | 更改当前图像的对比度 |
Crop | 将当前图像裁剪到给定的位置和大小 |
DetectEdges | 检测当前图像中的边缘 |
Resolution | 设置图像的分辨率 |
EntropyCrop | 将图像修剪到最大熵的区域 |
Filter | 将过滤器应用于当前图像 |
Flip | 水平或垂直翻转当前图像 |
Gamma | 调整给定图像的灰度(光强度)分量 |
GaussianBlur | 使用高斯内核模糊当前图像 |
Hue | 改变当前图像的色调,改变整体颜色 |
Halftone | 将当前图像转换为该图像的CMYK半色调表示 |
Quality | 改变当前图像的输出质量 |
ReplaceColor | 替换当前图像中的颜色 |
Resize | 将当前图像调整为给定尺寸 |
Rotate | 将当前图像旋转给定角度 |
以上只是列出了一些主要的操作方法,还有其他的方法这里就不再介绍,有兴趣可以自己取实践。下面就介绍一下一些核心对象。
注意:
谷歌浏览器默认的图片个是webp,如果转换图片格式的话,需要安装如下的插件:
https://imageprocessor.org/imageprocessor/plugins/webp/
更详细的请看转载地址:https://www.cnblogs.com/Leo_wl/p/6582728.html