65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 图像增强滤镜库

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (47投票s)

2006年11月18日

LGPL3

2分钟阅读

viewsIcon

180018

downloadIcon

4142

一组用于修改和样式化您的图像和照片的滤镜

库主页

Screenshot - box_colors2.png

引言

这个项目源于一个需求。需要一个简单的图像/照片 .NET 滤镜功能,以便对图片进行样式化和增强,以便在网络上(或任何其他地方)显示。诚然,网上散布着一些滤镜库,可以执行诸如 水印 灰度 ,甚至是一系列滤镜 (ImageMagick)。在大多数情况下,它们非常基础或对图像样式化没有帮助。此外,.NET System.Drawing.* 命名空间没有提供任何基本或高级的功能。例如,没有合适的旋转或调整大小的功能。因此,目标是将现有的所有不错的 .NET 滤镜收集到一个包中,并通过提供更多有用和样式化的滤镜来扩展它。

实现

基于上述需求,我创建了 YAEL,它代表:Yet Another Image Enhancement Library(又一个图像增强库)。

它只是一个框架和滤镜类。目前没有 UI(用户界面)。该框架非常基础和简单,因此可以轻松开发扩展。

有一个基本的 IFilter 接口和一个 BasicFilter 抽象类。所有滤镜都从 BasicFilter 类派生。

当前库中的滤镜包括

  • 调整大小
  • 旋转
  • 灰度
  • 圆角
  • 装箱
  • 阴影
  • 宝丽来相框
  • 文本和水印说明
  • 图像水印
  • 地板反射
  • 鱼眼
  • 倾斜
  • 还有更多即将推出...

这里有一些示例

Screenshot - grayScale_brighter.png

Screenshot - rotate_minus_30.png

Screenshot - rounded_35.png

Screenshot - box_colors2.png

Screenshot - dropShadow.png

Screenshot - dropShadow.png

Screenshot - text_water_middle_left.png

Screenshot - image_watermark_pacman.png

Screenshot - image_fisheye_default.png

Screenshot - image_floor_reflection.png

Screenshot - image_skew_plain.png

用法

使用非常简单。你所需要做的就是引用库程序集,加载图像,初始化滤镜,执行滤镜,然后保存转换后的图像。

这是一个示例

static void Main(string[] args)
{
    Image myImg = Bitmap.FromFile("cat.jpg");
    Image transformedImage;
    ZRLabs.Yael.BasicFilters.TextWatermarkFilter watermark = new 
        TextWatermarkFilter();
    ZRLabs.Yael.BasicFilters.BoxFilter box = new BoxFilter();
    ZRLabs.Yael.BasicFilters.BlackAndWhiteFilter blackAndWhite = new 
        BlackAndWhiteFilter();

    //A text watermark example
    watermark.Caption = "Test";
    watermark.AutomaticTextSize = true;
    transformedImage = watermark.ExecuteFilter(myImg);
    transformedImage.Save("cat_watermark.png", 
        System.Drawing.Imaging.ImageFormat.Png);

    //A boxing example
    transformedImage = box.ExecuteFilter(myImg);
    transformedImage.Save("cat_box.png", 
        System.Drawing.Imaging.ImageFormat.Png);

    //A grayscale example
    transformedImage = blackAndWhite.ExecuteFilter(myImg);
    transformedImage.Save("cat_blackAndWhite.png", 
        System.Drawing.Imaging.ImageFormat.Png);
}

更新

  • 15-Dev-2006
    • V1.0.3.0 发布
      • 添加了鱼眼、地板反射和倾斜滤镜。
      • 添加了一个管道辅助类,用于轻松流畅的转换。
  • 28-Nov-2006
    • 添加了在 BoxFilter 的顶部和侧面板上使用图像的能力。
      请查看示例页面以获取示例。
  • 27-Nov-2006
    • ResizeFilter 添加了一个 KeepAspectRatio 属性
  • 23-Nov-2006
    • 添加了一个图像水印滤镜
    • 将许可更改为 LGPL
© . All rights reserved.