ImageSharp 是支持.NET Core跨平台图形处理库,ImageSharp是ImageProcessor 的.NET Core跨平台实现。

ImageSharp 支持如下操作:

调整大小,裁剪,翻转,旋转,边缘检测等。

支持BMP,PNG,GIF,JPEG 编码器。

EXIF 读取和针对JPEG写。

暂时还不支持Drawing ,即无法支持验证码及水印等操作。

GitHub:https://github.com/JimBobSquarePants/ImageSharp

目前版本为1.0.0-alpha7。 

新建项目

新建一个.NET Core 控制台应用程序。

添加引用

由于目前还是alpha版,还未放置在NuGet 中,是在MyGet上 https://www.myget.org/gallery/p_w_picpathsharp。

在NuGet 程序包源中加入 ImageSharp 源。

ImageSharp 源地址:https://www.myget.org/F/p_w_picpathsharp

 

然后在NuGet控制台执行命令:

Install-Package ImageSharp -Version 1.0.0-alpha7

提示:由于是预览版更新较快,如版本无法引用请到https://www.myget.org/gallery/p_w_picpathsharp 查看版本号,或更改project.json 使用最新版本。

编写代码

首先我们需要一张图,将其放置于程序根目录下命令为lena.jpg。

示例代码如下:

        public static void Main(string[] args)
        {            //读取EXIF
            using (FileStream input = File.OpenRead("lena.jpg"))
            {
                Image p_w_picpath = new Image(input);                var exif = p_w_picpath.ExifProfile.Values;                foreach (var item in exif)
                {
                    Console.WriteLine(item.Tag+":"+item.Value);
                }
            }            
            //缩放
            using (FileStream input = File.OpenRead("lena.jpg"))            using (FileStream output = File.OpenWrite("lena2.jpg"))
            {
                Image p_w_picpath = new Image(input);
                p_w_picpath.Resize(p_w_picpath.Width / 2, p_w_picpath.Height / 2)
                     .Save(output);
            }            //裁剪
            using (FileStream input = File.OpenRead("lena.jpg"))            using (FileStream output = File.OpenWrite("lena3.jpg"))
            {
                Image p_w_picpath = new Image(input);
                p_w_picpath.Crop(p_w_picpath.Width / 2, p_w_picpath.Height / 2)
                     .Save(output);
            }            //旋转180°
            using (FileStream input = File.OpenRead("lena.jpg"))            using (FileStream output = File.OpenWrite("lena4.jpg"))
            {
                Image p_w_picpath = new Image(input);
                p_w_picpath.Rotate(RotateType.Rotate180)
                     .Save(output);
            }            //设置像素点方式简单画空白
            using (FileStream output = File.OpenWrite("lena5.jpg"))
            {
                Image p_w_picpath = new Image(100,200);
                Color[] colors = new Color[20000];                for (int i = 0; i < 20000; i++)
                {
                    colors[i] = Color.White;
                }
                p_w_picpath.SetPixels(100, 200, colors);
                p_w_picpath.Save(output);
            }
            Console.ReadKey();
        }

运行程序会在程序根目录下得到如下的图