.NET Core中使用水印
.NET Core中使用水印
在项目中,我需要给上传的图片添加水印,通过网上查找针对.NET Core 的找到两个方案:
- 使用
CoreCompat.System.Drawing及用于非Windows的runtime.osx.10.10-x64.CoreCompat.System.Drawing或runtime.linux-x64.CoreCompat.System.Drawing - 使用
System.Drawing.Common
遇到问题
经过尝试,发现方案1在.NET Core 2.2里面有类型冲突问题,如下:
The type 'Color' exists in both 'CoreCompat.System.Drawing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c0a7ed9c2333b592' and 'System.Drawing.Primitives, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
故我采用了方案2,一开始很顺利:本地Windows上测试、debug都正常!
但当我把代码部署到CentOS服务器上的时候,出现问题, 得到错误消息如下:
ERROR:The type initializer for 'Gdip' threw an exception.
at System.Drawing.SafeNativeMethods.Gdip.GdipLoadImageFromDelegate_linux(StreamGetHeaderDelegate getHeader, StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, IntPtr& image)
at System.Drawing.Image.InitFromStream(Stream stream)
at System.Drawing.Image.LoadFromStream(Stream stream, Boolean keepAlive)
问题解决
很快在GitHub上找到接近答案的答案:ERROR:The type initializer for 'Gdip' threw an exception
但按照上面的步骤(我稍做整理):
sudo yum install libgdiplus
cd /usr/lib
sudo ln -s libgdiplus.so gdiplus.dll
export LD_LIBRARY_PATH=/usr/lib
很遗憾,没有找到/usr/lib/libgdiplus.so,但我确实安装成功了。所以,经过摸索,我找到了,由于我的服务器是64位的,实际安装目录在/usr/lib64,且文件名是libgdiplus.so.0与libgdiplus.so.0.0.0,前者似乎是softlink。
OK到此成功解决,似乎都不需要重启服务,步骤如下:
sudo yum install libgdiplus
cd /usr/lib64
ln -s libgdiplus.so gdiplus.dll
export LD_LIBRARY_PATH=/usr/lib
参考文章
Watermark images on the fly in ASP.NET Core
在ASP.NET Core中给上传图片功能添加水印
ERROR:The type initializer for 'Gdip' threw an exception
其他
安装libgdiplus的成功输出:
[root@izuf****1agz ****]# yum install libgdiplus
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 3.4 kB 00:00:00
nginx | 2.9 kB 00:00:00
packages-microsoft-com-prod | 2.9 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/6): epel/x86_64/updateinfo | 974 kB 00:00:00
(2/6): extras/7/x86_64/primary_db | 200 kB 00:00:00
(3/6): updates/7/x86_64/primary_db | 5.0 MB 00:00:00
(4/6): epel/x86_64/primary_db | 6.7 MB 00:00:00
(5/6): packages-microsoft-com-prod/primary_db | 170 kB 00:00:00
(6/6): nginx/x86_64/primary_db | 46 kB 00:00:05
Resolving Dependencies
--> Running transaction check
---> Package libgdiplus.x86_64 0:2.10-10.el7 will be installed
--> Processing Dependency: libtiff.so.5(LIBTIFF_4.0)(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Processing Dependency: libXrender.so.1()(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Processing Dependency: libcairo.so.2()(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Processing Dependency: libexif.so.12()(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Processing Dependency: libgif.so.4()(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Processing Dependency: libtiff.so.5()(64bit) for package: libgdiplus-2.10-10.el7.x86_64
--> Running transaction check
---> Package cairo.x86_64 0:1.15.12-3.el7 will be installed
--> Processing Dependency: libpixman-1.so.0()(64bit) for package: cairo-1.15.12-3.el7.x86_64
--> Processing Dependency: libGL.so.1()(64bit) for package: cairo-1.15.12-3.el7.x86_64
--> Processing Dependency: libEGL.so.1()(64bit) for package: cairo-1.15.12-3.el7.x86_64
---> Package giflib.x86_64 0:4.1.6-9.el7 will be installed
---> Package libXrender.x86_64 0:0.9.10-1.el7 will be installed
---> Package libexif.x86_64 0:0.6.21-6.el7 will be installed
---> Package libtiff.x86_64 0:4.0.3-27.el7_3 will be installed
--> Processing Dependency: libjbig.so.2.0()(64bit) for package: libtiff-4.0.3-27.el7_3.x86_64
--> Running transaction check
---> Package jbigkit-libs.x86_64 0:2.0-11.el7 will be installed
---> Package libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
--> Processing Dependency: libglvnd(x86-64) = 1:1.0.1-0.8.git5baa1e5.el7 for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
--> Processing Dependency: mesa-libEGL(x86-64) >= 13.0.4-1 for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
--> Processing Dependency: libGLdispatch.so.0()(64bit) for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
---> Package libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
--> Processing Dependency: mesa-libGL(x86-64) >= 13.0.4-1 for package: 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64
---> Package pixman.x86_64 0:0.34.0-1.el7 will be installed
--> Running transaction check
---> Package libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
---> Package mesa-libEGL.x86_64 0:18.0.5-4.el7_6 will be installed
--> Processing Dependency: mesa-libgbm = 18.0.5-4.el7_6 for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libxshmfence.so.1()(64bit) for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libwayland-server.so.0()(64bit) for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libwayland-client.so.0()(64bit) for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libglapi.so.0()(64bit) for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libgbm.so.1()(64bit) for package: mesa-libEGL-18.0.5-4.el7_6.x86_64
---> Package mesa-libGL.x86_64 0:18.0.5-4.el7_6 will be installed
--> Processing Dependency: libXxf86vm.so.1()(64bit) for package: mesa-libGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libXfixes.so.3()(64bit) for package: mesa-libGL-18.0.5-4.el7_6.x86_64
--> Processing Dependency: libXdamage.so.1()(64bit) for package: mesa-libGL-18.0.5-4.el7_6.x86_64
--> Running transaction check
---> Package libXdamage.x86_64 0:1.1.4-4.1.el7 will be installed
---> Package libXfixes.x86_64 0:5.0.3-1.el7 will be installed
---> Package libXxf86vm.x86_64 0:1.1.4-1.el7 will be installed
---> Package libwayland-client.x86_64 0:1.15.0-1.el7 will be installed
---> Package libwayland-server.x86_64 0:1.15.0-1.el7 will be installed
---> Package libxshmfence.x86_64 0:1.2-1.el7 will be installed
---> Package mesa-libgbm.x86_64 0:18.0.5-4.el7_6 will be installed
---> Package mesa-libglapi.x86_64 0:18.0.5-4.el7_6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
libgdiplus x86_64 2.10-10.el7 epel 163 k
Installing for dependencies:
cairo x86_64 1.15.12-3.el7 base 741 k
giflib x86_64 4.1.6-9.el7 base 40 k
jbigkit-libs x86_64 2.0-11.el7 base 46 k
libXdamage x86_64 1.1.4-4.1.el7 base 20 k
libXfixes x86_64 5.0.3-1.el7 base 18 k
libXrender x86_64 0.9.10-1.el7 base 26 k
libXxf86vm x86_64 1.1.4-1.el7 base 18 k
libexif x86_64 0.6.21-6.el7 base 347 k
libglvnd x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 89 k
libglvnd-egl x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 44 k
libglvnd-glx x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 125 k
libtiff x86_64 4.0.3-27.el7_3 base 170 k
libwayland-client x86_64 1.15.0-1.el7 base 33 k
libwayland-server x86_64 1.15.0-1.el7 base 39 k
libxshmfence x86_64 1.2-1.el7 base 7.2 k
mesa-libEGL x86_64 18.0.5-4.el7_6 updates 102 k
mesa-libGL x86_64 18.0.5-4.el7_6 updates 162 k
mesa-libgbm x86_64 18.0.5-4.el7_6 updates 38 k
mesa-libglapi x86_64 18.0.5-4.el7_6 updates 44 k
pixman x86_64 0.34.0-1.el7 base 248 k
Transaction Summary
=======================================================================================================
Install 1 Package (+20 Dependent packages)
Total download size: 2.5 M
Installed size: 8.0 M
Is this ok [y/d/N]: y
Downloading packages:
(1/21): giflib-4.1.6-9.el7.x86_64.rpm | 40 kB 00:00:00
(2/21): jbigkit-libs-2.0-11.el7.x86_64.rpm | 46 kB 00:00:00
(3/21): libXdamage-1.1.4-4.1.el7.x86_64.rpm | 20 kB 00:00:00
(4/21): libXfixes-5.0.3-1.el7.x86_64.rpm | 18 kB 00:00:00
(5/21): cairo-1.15.12-3.el7.x86_64.rpm | 741 kB 00:00:00
(6/21): libXrender-0.9.10-1.el7.x86_64.rpm | 26 kB 00:00:00
(7/21): libXxf86vm-1.1.4-1.el7.x86_64.rpm | 18 kB 00:00:00
(8/21): libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm | 89 kB 00:00:00
(9/21): libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm | 44 kB 00:00:00
(10/21): libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm | 125 kB 00:00:00
(11/21): libtiff-4.0.3-27.el7_3.x86_64.rpm | 170 kB 00:00:00
(12/21): libwayland-client-1.15.0-1.el7.x86_64.rpm | 33 kB 00:00:00
(13/21): libgdiplus-2.10-10.el7.x86_64.rpm | 163 kB 00:00:00
(14/21): libwayland-server-1.15.0-1.el7.x86_64.rpm | 39 kB 00:00:00
(15/21): libexif-0.6.21-6.el7.x86_64.rpm | 347 kB 00:00:00
(16/21): libxshmfence-1.2-1.el7.x86_64.rpm | 7.2 kB 00:00:00
(17/21): mesa-libEGL-18.0.5-4.el7_6.x86_64.rpm | 102 kB 00:00:00
(18/21): mesa-libGL-18.0.5-4.el7_6.x86_64.rpm | 162 kB 00:00:00
(19/21): mesa-libgbm-18.0.5-4.el7_6.x86_64.rpm | 38 kB 00:00:00
(20/21): mesa-libglapi-18.0.5-4.el7_6.x86_64.rpm | 44 kB 00:00:00
(21/21): pixman-0.34.0-1.el7.x86_64.rpm | 248 kB 00:00:00
-------------------------------------------------------------------------------------------------------
Total 5.2 MB/s | 2.5 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mesa-libglapi-18.0.5-4.el7_6.x86_64 1/21
Installing : 1:libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 2/21
Installing : libXfixes-5.0.3-1.el7.x86_64 3/21
Installing : libwayland-server-1.15.0-1.el7.x86_64 4/21
Installing : libXrender-0.9.10-1.el7.x86_64 5/21
Installing : libxshmfence-1.2-1.el7.x86_64 6/21
Installing : mesa-libgbm-18.0.5-4.el7_6.x86_64 7/21
Installing : libXdamage-1.1.4-4.1.el7.x86_64 8/21
Installing : jbigkit-libs-2.0-11.el7.x86_64 9/21
Installing : libtiff-4.0.3-27.el7_3.x86_64 10/21
Installing : pixman-0.34.0-1.el7.x86_64 11/21
Installing : libexif-0.6.21-6.el7.x86_64 12/21
Installing : libXxf86vm-1.1.4-1.el7.x86_64 13/21
Installing : 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 14/21
Installing : mesa-libGL-18.0.5-4.el7_6.x86_64 15/21
Installing : giflib-4.1.6-9.el7.x86_64 16/21
Installing : libwayland-client-1.15.0-1.el7.x86_64 17/21
Installing : 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 18/21
Installing : mesa-libEGL-18.0.5-4.el7_6.x86_64 19/21
Installing : cairo-1.15.12-3.el7.x86_64 20/21
Installing : libgdiplus-2.10-10.el7.x86_64 21/21
Verifying : libgdiplus-2.10-10.el7.x86_64 1/21
Verifying : mesa-libEGL-18.0.5-4.el7_6.x86_64 2/21
Verifying : libtiff-4.0.3-27.el7_3.x86_64 3/21
Verifying : libwayland-client-1.15.0-1.el7.x86_64 4/21
Verifying : libxshmfence-1.2-1.el7.x86_64 5/21
Verifying : giflib-4.1.6-9.el7.x86_64 6/21
Verifying : libXxf86vm-1.1.4-1.el7.x86_64 7/21
Verifying : libXrender-0.9.10-1.el7.x86_64 8/21
Verifying : mesa-libglapi-18.0.5-4.el7_6.x86_64 9/21
Verifying : 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 10/21
Verifying : mesa-libgbm-18.0.5-4.el7_6.x86_64 11/21
Verifying : libXdamage-1.1.4-4.1.el7.x86_64 12/21
Verifying : libwayland-server-1.15.0-1.el7.x86_64 13/21
Verifying : libexif-0.6.21-6.el7.x86_64 14/21
Verifying : pixman-0.34.0-1.el7.x86_64 15/21
Verifying : mesa-libGL-18.0.5-4.el7_6.x86_64 16/21
Verifying : libXfixes-5.0.3-1.el7.x86_64 17/21
Verifying : 1:libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 18/21
Verifying : jbigkit-libs-2.0-11.el7.x86_64 19/21
Verifying : 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 20/21
Verifying : cairo-1.15.12-3.el7.x86_64 21/21
Installed:
libgdiplus.x86_64 0:2.10-10.el7
Dependency Installed:
cairo.x86_64 0:1.15.12-3.el7 giflib.x86_64 0:4.1.6-9.el7
jbigkit-libs.x86_64 0:2.0-11.el7 libXdamage.x86_64 0:1.1.4-4.1.el7
libXfixes.x86_64 0:5.0.3-1.el7 libXrender.x86_64 0:0.9.10-1.el7
libXxf86vm.x86_64 0:1.1.4-1.el7 libexif.x86_64 0:0.6.21-6.el7
libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7 libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7
libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7 libtiff.x86_64 0:4.0.3-27.el7_3
libwayland-client.x86_64 0:1.15.0-1.el7 libwayland-server.x86_64 0:1.15.0-1.el7
libxshmfence.x86_64 0:1.2-1.el7 mesa-libEGL.x86_64 0:18.0.5-4.el7_6
mesa-libGL.x86_64 0:18.0.5-4.el7_6 mesa-libgbm.x86_64 0:18.0.5-4.el7_6
mesa-libglapi.x86_64 0:18.0.5-4.el7_6 pixman.x86_64 0:0.34.0-1.el7
Complete!
.NET Core中使用水印的更多相关文章
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计 ...
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core ...
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图
原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...
随机推荐
- ELK之elasticsearch插件导致filebeat没有上传日志至elasticsearch解决办法
使用filebeat收集nginx发现日志为上传,elasticsearch没有日志,kibana没有展示 查看filebeat日志 日志目录为/var/log/filebeat 下面有多个日志文件 ...
- 锚点/JQ:点击导航跳到网页中的指定位置
今天做了一个简单的功能,页面往下滚动到一定位置,顶部出现一个浮动的导航栏,点击导航栏标签,下面页面跳转到相应的区域.回到顶部,导航栏隐藏. 因为顶部有一个浮动的导航栏,所以跳转到下面页面的时候,总是盖 ...
- php5.6安装及php-fpm优化配置
1,安装依赖包: yum install -y gcc gcc-c++ zlib zlib-devel pcre pcre-devel gd libjpeg libjpeg-devel libpn ...
- CSS内联--与块级元素区别
内联元素:1.内联元素(inline)不会独占一行,相邻的内联元素会排在同一行.其宽度随内容的变化而变化. 2.内联元素不可以设置宽高 3.内联元素可以设置margin,padding,但只在水平方向 ...
- SQL入门经典(第四版)学习记录——欢迎来到SQL世界(一)
1.结构化查询语言——SQL,关系型数据库通信的标准语言: 2.关系型数据库:表的逻辑单元组成,这些表在内部彼此关联,组成了关系型数据库: 3.SQL会话:用户用SQL命令语句与关系型数据库进行交互时 ...
- 【坑】mysql 8.0以后的驱动 jar、连接池的变化
文章目录 前言 com.mysql.cj.jdbc.Driver 后记 前言 博主公司刚配置了新电脑,安装开发环境的时候,美滋滋的将开发工具都装了新版本,结果在使用 mysql 的时候,发现一直链接数 ...
- qt-博客
将QQ中的图文聊天内容显示到Qt界面: http://www.qter.org/portal.php?mod=view&aid=12
- Nginx学习笔记(四):基本数据结构
目录 Nginx的一些特点 Nginx自定义整数类型 异常机制错误处理 内存池 字符串 时间与日期 运行日志 Nginx的一些特点 高性能 采用事件驱动模型,可以无阻塞的处理海量并发连接 高稳定性 ...
- Sonya and Bitwise OR CodeForces - 1004F (线段树,分治)
大意: 给定序列$a$, 给定整数$x$. 两种操作(1)单点修改 (2)给定区间$[l,r]$,求有多少子区间满足位或和不少于$x$. 假设不带修改. 固定右端点, 合法区间关于左端点单调的. 可以 ...
- QMap里面的值任然是一个QMap,在做循环插入的时候需要记得清空。
这个问题是我以前的一个问题,当时由于有其他的事情去处理就忘记了,前段时间我的项目要进行集成测试了,为了避免这个缺陷,只能再把这个问题想起来了,再进行解决.有很多问题你觉得不应该发生,其实很多时候都是逻 ...