需要引用 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的更多相关文章

  1. C#一些常用的图片操作方法:生成文字图片 合并图片等

    生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...

  2. C# .net 高清压缩图片 合并图片方法

    /// <summary> /// 合并宽度一样的图片 /// </summary> /// <param name="imgUrls">多张图 ...

  3. 在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例

    1. 基础 1.1  将图片的宽度和高度缩小一半 直接贴代码了: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup ...

  4. .net core微信群图片合并

    引用:SixLabors.ImageSharp,SixLabors.ImageSharp.Drawing,System.Drawing.Common /// <summary> /// 群 ...

  5. php 图片添加文字水印 以及 图片合成(微信快码传播)

    1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...

  6. java 图片压缩 剪切 水印 转换 黑白 缩放

    专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...

  7. Asp.net 实现图片缩放 无水印(方法一)

    /// <summary> /// 图片缩放 无水印 /// </summary> /// <param name="sourceFile">图 ...

  8. asp .net 为图片添加文字水印(内包含有加图片水印的方法) .

    在项目中先创建一个Imag_writer 类库 在该类库下分别创建两个枚举类型WaterMarkType (水印的类型).WaterMarkPosition (水印的位置).代码如下: using S ...

  9. Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

    前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...

随机推荐

  1. 如果axios请求失败,如何获取后端接口返回的状态码及错误信息

    这两天在工作中遇到一个问题,一个请求返回400错误,我需要向用户展示后端返回的错误信息,但是用普通的catch方法只能获取到浏览器返回的400错误提示,不能获取到后端返回的,后经查阅得出下面方法: a ...

  2. python' s fifth day for me dict

    字典 dict : key--vlaue 储存大量的数据,而且是关系型数据,查询速度快(二分查询) 数据类型分类: 可变数据类型(不可哈希):list(列表) , dict(字典), set(集合) ...

  3. 配置key认证登陆Ubuntu (下)

    梗概: 使用证书登陆,可以减少密码的使用,避免密码泄露,证书登陆更加方便.安全. Secure CRT 和Putty 原理相同,生成 密钥对(Key pair)操作有所不同. 1.生成key pair ...

  4. Document.location.href和.replace的区别

    转自:https://www.cnblogs.com/GT_Andy/archive/2007/10/31/1922138.html 1 Document.location.href和.replace ...

  5. Mycat实战之连续分片

    1 按照日期(天)分片: 从开始日期算起,按照天数来分片 例如,从2017-11-01,每10天一个分片且可以指定结束日期 注意事项:需要提前将分片规划好,建好,否则有可能日期超出实际配置分片数 1. ...

  6. Aws s3 api

    PUT操作的这个实现将一个对象添加到一个bucket中. 您必须具有对bucket的WRITE权限才能向其中添加对象. Amazon S3从不添加部分对象; 如果您收到成功响应,则Amazon S3将 ...

  7. libevent源码深度剖析十二

    libevent源码深度剖析十二 ——让libevent支持多线程 张亮 Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libev ...

  8. cout/cin

    转载来源:http://baike.baidu.com/link?url=NiNaSw0pF7RqFO8u0jx8KWk9yOfFFYy24xCJlQ6_qMcw5_WBzRKOqsO6tfvvJbZ ...

  9. Luogu 2597 [ZJOI2012]灾难

    BZOJ 2815. 解法还是挺巧妙的. 放上写得很详细很好懂的题解链接  戳这里. 一个物种$x$如果要灭绝,那么沿着它的入边反向走走走,一定可以走到一个点$y$,如果这个点$y$的物种灭绝了,那么 ...

  10. C# 用代码返回上一页

    若我们在后台.cs文件中想做到让浏览器返回上一页,我们可以在.cs代码中这样写 Page.ClientScript.RegisterStartupScript(Page.GetType(), &quo ...