.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 ...
随机推荐
- PHP读取文件夹数据,并分页
protected function read_all ($dir){ // 确保目录有权限进入 if(!is_dir($dir)) return false; $handle = opendir($ ...
- C++获取Lua全局变量和执行Lua多参数多返回值函数
C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...
- 引用WebService出现错误
在引用WebService作为服务引用的时候,由于VS生成时生成了两个入口点,导致出现 引发的异常:“System.Windows.Markup.XamlParseException”(位于 Pres ...
- Checker Challenge跳棋的挑战(n皇后问题)
Description 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 0 1 2 3 4 5 6 ...
- oracle用户和权限
在oracle中,一个服务器上一般只有一个数据库.在一个数据库中,不同的用户项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,当一个用户想访问其它用户下的数据库对象时,必须由对方授予一定的权限 ...
- 详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用. 1. ...
- 解决mybatis中转义字符的问题
xml格式中不允许出现类似“>”这样的字符,有如下两种解决方法 方法一:使用转义字符 SELECT * FROM test WHERE 1 = 1 AND start_date <= CU ...
- 文件流的处理 C C++
C: 借鉴C 文件操作库函数总结 eg: #include <fstream> #include <iostream> #include <cstdio> usin ...
- 安装gdb insight(6.8.1)
如果之前安装过6.8或其它版本,请先删除以下目录 rm -rf /usr/local/insight rm -rf /usr/share/tcltk 如果之前设置过环境变量,也请删除 unset TC ...
- linq 条件查询与分页
<div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox>< ...