目的
需要使用到类 using System.Drawing;
讲请求的流文件转成图片
Image downImage = Image.FromStream(res.Content.ReadAsStream());
错误
系统错误,由全局异常中间件拦截 System.TypeInitializationException: The type initializer for ‘Gdip’ threw an exception.
—> System.DllNotFoundException: Unable to load shared library ‘libgdiplus’ or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibgdiplus: cannot open shared object file: No such file or directory
代码
HttpClient httpClient = new HttpClient();
HttpResponseMessage res = await httpClient.GetAsync(uri);
if (res.StatusCode == HttpStatusCode.OK) {
Image downImage = Image.FromStream(res.Content.ReadAsStream());
var downPicture = excelWorksheet.Drawings.AddPicture($"image_{DateTime.Now.Ticks}", downImage);
//这两句是我向excel中插入图片的语句,先注释掉
//downPicture.SetSize(40,40);
//downPicture.SetPosition(rowNum - 1, 0, columnNum - 1, i*40);
} else {
LogHelper.Info("Class:FAController function:ExportAsync FA IMAGES文件下载请求报错!");
}
原因
总体解决下来,觉得是缺少组件,System.Drawing 在linux 并不能很好的支持,所以需要下载特定的组件(个人愚见,非权威说法),需要下载对应的组件
解决方案
以下方案来自于网络 建议直接使用方案二(在此只做记录,本人尝试了两次,显示方案一,不行,在试验的方案二,才可以的,所以不能否认方案一不好用 本人电脑 linux centos8)
博客园地址:方案一
解决办法如下
一、安装一下包:
按照顺序执行即可
yum -y install autoconf automake libtool
yum -y install freetype-devel fontconfig libXft-devel
yum -y install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel
yum -y install glib2-devel cairo-devel
yum -y install mlocate
git clone https://github.com/mono/libgdiplus
cd libgdiplus
./autogen.sh
make
make install
二、创建符号链接:
ln -s /usr/local/lib/libgdiplus.so /usr/lib64/libgdiplus.so
ln -s /usr/local/lib/libgdiplus.so /usr/libgdiplus.so
三、更新一下库:
updatedb
csdn地址 : 方案二
执行以下命令 (然后重启自己的项目即可)
sudo yum install https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/libgdiplus-6.0.4-3.el8.x86_64.rpm
总结
只知其然不止其所以然