在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例
1. 基础
1.1 将图片的宽度和高度缩小一半
直接贴代码了:
- <Project Sdk="Microsoft.NET.Sdk">
- <PropertyGroup>
- <OutputType>Exe</OutputType>
- <TargetFramework>netcoreapp3.</TargetFramework>
- </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0007" />
- </ItemGroup>
- <ItemGroup>
- <None Update="foo.jpg">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </None>
- </ItemGroup>
- </Project>
- using SixLabors.ImageSharp;
- using SixLabors.ImageSharp.Processing;
- using System;
- class Program
- {
- static void Main(string[] args)
- {
- // Open the file and detect the file type and decode it.
- // Our image is now in an uncompressed, file format agnostic, structure in-memory as a series of pixels.
- using (Image image = Image.Load("foo.jpg"))
- {
- // Resize the image in place and return it for chaining.
- // 'x' signifies the current image processing context.
- image.Mutate(x => x.Resize(image.Width / , image.Height / ));
- // The library automatically picks an encoder based on the file extensions then encodes and write the data to disk.
- image.Save("bar.jpg");
- } // Dispose - releasing memory into a memory pool ready for the next image you wish to process.
- }
- }
1.2 以图片原始的格式保存文件
- using SixLabors.ImageSharp;
- using SixLabors.ImageSharp.Formats;
- using SixLabors.ImageSharp.PixelFormats;
- using SixLabors.ImageSharp.Processing;
- using System;
- using System.Linq;
- using System.Drawing.Text;
- class Program
- {
- static void Main(string[] args)
- {
- IImageFormat format;
- using (Image image = Image.Load("foo.jpg", out format))
- {
- image.Mutate(x => x.Resize(image.Width / , image.Height / ));
- image.Save($"bar.{format.FileExtensions.First()}");
- }
- }
- }
1.3
- using SixLabors.ImageSharp;
- using SixLabors.ImageSharp.Formats;
- using SixLabors.ImageSharp.PixelFormats;
- using SixLabors.ImageSharp.Processing;
- using System;
- using System.Linq;
- using System.Drawing.Text;
- using SixLabors.ImageSharp.Formats.Jpeg;
- class Program
- {
- static void Main(string[] args)
- {
- IImageFormat format;
- using (Image image = Image.Load("foo.jpg", out format))
- {
- image.Mutate(x => x.Resize(image.Width / , image.Height / ));
- JpegEncoder encoder = new JpegEncoder()
- {
- //标准中定义的0到100之间的质量值。默认值为75。
- //通过减少Quality松散的信息,从而减小文件大小。
- Quality = ,
- //IgnoreMetadata = true
- };
- image.Save($"bar.{format.FileExtensions.First()}", encoder);
- }
- }
- }
2. 进阶
2.1
3. 高级
3.1
谢谢浏览!
在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例的更多相关文章
- 位图文件格式及linux下C语言来操作位图文件
说到图片,位图(Bitmap)当然是最简单的,它是Windows显示图片的基本格式,其文件扩展名为*.BMP.由于没有经过任何的压缩,故BMP图片往往很大.在Windows下,任何格式的图片文件都要转 ...
- .NET CORE下最快比较两个文件内容是否相同的方法 - 续
.NET CORE下最快比较两个文件内容是否相同的方法 - 续 在上一篇博文中, 我使用了几种方法试图找到哪个是.NET CORE下最快比较两个文件的方法.文章发布后,引起了很多博友的讨论, 在此我对 ...
- 在Android下通过ExifInterface类操作图片的Exif信息
什么是Exif 先来了解什么是Exif.Exif是一种图像文件格式,它的数据存储于JPEG格式是完全相同的,实际上Exif格式就是JPEG格式头插入了 数码照片的信息,包括拍摄的光圈.快门.平衡白.I ...
- .NET CORE下最快比较两个文件内容是否相同的方法
本文因为未考虑磁盘缓存, 结果不是很准确, 更严谨的结果请参看本博文的续集 最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 ...
- 使用python查询某目录下所有‘jpg’结尾的图片文件
调用os模块,先建立一个对目标目录的walk迭代器. 然后再对迭代器进行遍历,判断每个文件是否以'jpg'结尾. 若是,则输出. import os g = os.walk("G:" ...
- wpf下的图片放大缩小
WPF下实现图片的放大缩小移动 在windows 7里面有自带的图片查看器,这个软件可以打开一张图片然后以鼠标在图片中的焦点为原点来进行缩放,并且放大后可以随意拖动.下面我们在WPF中实现这个功能 ...
- Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类
本文目录 1. 前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...
- 七、.net core下配置、数据库访问等操作实现
配置读取 .net core下读取配置还是有点麻烦的,本身没有System.Configuration.dll,所以在进行配置前需要自行引用Microsoft.Extensions.Configura ...
- # .NET Core下操作Git,自动提交代码到
.NET Core下操作Git,自动提交代码到 转自博客园(阿星Plus) .NET Core 3.0 预览版发布已经好些时日了,博客园也已将其用于生产环境中,可见 .NET Core 日趋成熟 回归 ...
随机推荐
- tensorflow基础-数据类型
一:tensorflow中的计算定义和执行 首先,对于tensorflow来说,最重要的概念就是图(Graph)和会话(Session),tensorflow的计算思想是:以图的形式来表示模型,表示和 ...
- pytorch 中的Variable一般常用的使用方法
Variable一般的初始化方法,默认是不求梯度的 import torch from torch.autograd import Variable x_tensor = torch.randn(2, ...
- javascript中的toString()
基本介绍 javascript中的toString方法是我们在写前端时经常要用的一个函数,也就是将我们的变量转换成字符串的方法. javascript中各种类型的toString方法 javascri ...
- cisco ssh实验--附带配置脚本-2019.11.19
cisco ssh实验
- koa2 从入门到进阶之路 (六)
之前的文章我们介绍了一下 koa post提交数据及 koa-bodyparser中间件,本篇文章我们来看一下 koa-static静态资源中间件. 我们在之前的目录想引入外部的 js,css,img ...
- PHP中发送qq邮件
<?php namespace app\home\logic; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Except ...
- js 轮播图效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Linux安装docker-compose
下载:curl -L https://get.daocloud.io/docker/compose/releases/download/1.16.1/docker-compose-`uname -s` ...
- Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理
这是搭建个人博客系统系列文章的最后一篇,如果你是从第一篇一路跟下来的,那么恭喜你,即将完成整个博客网站的搭建.OK,话不多说,开始我们的收官之战. 不知你想过没有,如果我们的文章少,一眼看完整个目录, ...
- TICK技术栈(四)Grafana安装及使用
1.什么是Grafana? Grafana是一款采用go语言和Angular框架编写的开源的可视化工具,主要用于大规模指标数据的可视化展示,提供包括折线图,饼图,仪表盘等多种监控数据可视化UI,是网络 ...