.net core 图片合并,图片水印,等比例缩小,SixLabors.ImageSharp
需要引用 SixLabors.ImageSharp 和SixLabors.ImageSharp.Drawing
引用方法 NuGet包管理

添加程序包来源 https://www.myget.org/F/imagesharp 包括预览发行版 目前使用的是 1.0.0-beta0005 版本

3个引用
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Processing;
1图片与二维码合并
/// <summary>
/// 合并图片 小图片放在大图片上面
/// </summary>
/// <param name="TempleBase64Str">模板大图片base64</param>
/// <param name="OutputBase64Str">模板小图片base64</param>
/// <param name="x">X坐标</param>
/// <param name="y">y坐标</param>
/// <returns></returns>
public ImageResponse MergeImage(string TempleBase64Str, string OutputBase64Str, int x, int y)
{
string strRet = null;
if (string.IsNullOrEmpty(TempleBase64Str))
{
return new ImageResponse { success = false, errmsg = "请传入模板大图片base64" };
}
if (string.IsNullOrEmpty(OutputBase64Str))
{
return new ImageResponse { success = false, errmsg = "请传入模板小图片base64" };
}
if (x < || y < )
{
return new ImageResponse { success = false, errmsg = "坐标不能传入负数" };
}
try
{
byte[] templebytes = Convert.FromBase64String(TempleBase64Str);
byte[] outputbytes = Convert.FromBase64String(OutputBase64Str);
IImageFormat format = null;
var imagesTemle = SixLabors.ImageSharp.Image.Load(templebytes, out format);
var outputImg = SixLabors.ImageSharp.Image.Load(outputbytes); if (imagesTemle.Height - (outputImg.Height + y) <= )
{
return new ImageResponse { success = false, errmsg = "Y坐标高度超限" };
}
if (imagesTemle.Width - (outputImg.Width + x) <= )
{
return new ImageResponse { success = false, errmsg = "X坐标宽度超限" };
}
//进行多图片处理
imagesTemle.Mutate(a =>
{
//还是合并
a.DrawImage(outputImg, , new SixLabors.Primitives.Point(x, y));
});
strRet = imagesTemle.ToBase64String(format);
return new ImageResponse { success = true, base64Str = strRet };
}
catch (Exception ex)
{
return new ImageResponse { success = false, errmsg ="报错信息"+ex.Message };
}
}
2缩小倍数
outputImg.Mutate(ctx => ctx.Resize(outputImg.Width / 2, outputImg.Height / 2));
a.DrawImage(outputImg, 1, new SixLabors.Primitives.Point(x, y)); //参数1 范围是0-1 代表的模糊程度
最后生成的图片就是下面的样子 不过返回的是图片的base64字符串
byte[] 也可以转换从成
using (Stream fs = new MemoryStream(bytes))
//路径参数
using(FileStream streamTemple=System.IO.File.OpenRead("c/图片路径"))
using(MemoryStream output=new MemoryStream())
{
...
//保存图片
imagesTemle.SaveAsJpeg(streamTemple);
streamTemple.Close();
...
}
这里是 官方文档 所有的功能详情 在这里面 https://sixlabors.github.io/docs/api/index.html 如果对您有用 点个赞呦

.net core 图片合并,图片水印,等比例缩小,SixLabors.ImageSharp的更多相关文章
- C#一些常用的图片操作方法:生成文字图片 合并图片等
生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...
- C# .net 高清压缩图片 合并图片方法
/// <summary> /// 合并宽度一样的图片 /// </summary> /// <param name="imgUrls">多张图 ...
- 在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例
1. 基础 1.1 将图片的宽度和高度缩小一半 直接贴代码了: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup ...
- .net core微信群图片合并
引用:SixLabors.ImageSharp,SixLabors.ImageSharp.Drawing,System.Drawing.Common /// <summary> /// 群 ...
- php 图片添加文字水印 以及 图片合成(微信快码传播)
1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...
- java 图片压缩 剪切 水印 转换 黑白 缩放
专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...
- Asp.net 实现图片缩放 无水印(方法一)
/// <summary> /// 图片缩放 无水印 /// </summary> /// <param name="sourceFile">图 ...
- asp .net 为图片添加文字水印(内包含有加图片水印的方法) .
在项目中先创建一个Imag_writer 类库 在该类库下分别创建两个枚举类型WaterMarkType (水印的类型).WaterMarkPosition (水印的位置).代码如下: using S ...
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...
随机推荐
- python下载指定页面的所有图片
实现步骤: 1.下载页面源码 2.对页面进行解析,获取页面中所有的图片路径 3.下载图片到指定路径 代码实例: # coding: utf-8 import urllib2 # 该模块用于打开页面地址 ...
- Linux学习笔记 -- 话说文件
文件基本属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Li ...
- MFC入门经典
今天向同学请教了下MFC的入门问题,当真有种"听君一席话,胜读十年书"的感觉.我个人以为每个学习C++控制台类型编程的新手都希望能够把小黑窗变为交互简单的窗口程序,这就促使我们学习 ...
- 【知识碎片】CSS 篇
1.CSS达到截取效果 地方卡机了会计师的立法及 => 地方卡机了... max-width: 400px; overflow: hidden; white-space: nowrap; t ...
- shell编程之sed编辑器&gawk程序
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/560372 s ...
- Python学习笔记_一个Tkinter示例,使用FileDialog
为了使用Python进行数据分析,编写一个图形界面,选择一个Excel文件(或CSV),然后进行后续处理. 一.本示例涵盖如下知识点: 1.FileDialog的使用 2.退出程序 3.消息提示框的示 ...
- 面试题:J2EE中web.xml配置文件详解 背1
一.web.xml是什么 web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是Web应用的配置文件,是Web应用的基础. 二.web.xml加载流程 总的来说:ServletCont ...
- C++之shared_ptr总结
转自 http://blog.csdn.net/u013696062/article/details/39665247 Share_ptr也是一种智能指针.类比于auto_ptr学习.所以推荐先学习a ...
- unity5.6里Baked Lighting下面几个Lighting Mode的解释
这个似乎是新增的功能,目前在官方文档里还没有解释,但有一个链接指向『草案』, 可是链接在被墙的google doc上,为了方便阅读和备忘,全部贴过来整在一起: 因为原文太长,把总结写在前面吧: 1.四 ...
- Luogu 2573 [SCOI2012]滑雪
BZOJ 2753 首先可以按照题目要求的把所有的有向边建出来,然后进去广搜就可以求出第一问的解,然后考虑如何求解第二问,我们把所有搜到的边按照到达的点的高度位第一关键字,边的长度为第二关键字排序之后 ...