需求
绘制一张带有二维码的图片,并绘制一些文字等。
环境使用了debian docker的镜像。然而正常操作后图片上文字全是乱码,排查后发现需要以下改动:
绘图库
首先Dockerfile需要包含Linux下绘图的类库:
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev
字符集
修改字符集为【zh_CN.UTF-8】。
Dockerfile中加入:
RUN apt-get install -y locales locales-all
RUN locale-gen zh_CN
RUN locale-gen zh_CN.utf8
RUN update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
使用locale
命令可以查看当前字符集。
使用locale -a
命令可以查看已经下载的字符集。
字体
如果以上加入后图片中的中文还是乱码,那可能系统中没有默认的中文字体,还需要加入中文字体。
比如:将字体文件放在宿主机public/static/font/
,然后复制到容器内/usr/share/fonts/myfonts/
,并执行mkfontscale
、mkfontdir
、fc-cache
。
字体文件可以从window中C:\Windows\Fonts
直接复制。
Dockerfile中加入:
RUN apt-get -y install fontconfig xfonts-utils
WORKDIR /usr/share/fonts/myfonts/
COPY public/static/font/ /usr/share/fonts/myfonts
RUN mkfontscale /usr/share/fonts/myfonts/
RUN mkfontdir /usr/share/fonts/myfonts/
RUN fc-cache
>>转载请注明原文链接地址:Linux下使用.NetCore绘制图片遇到的坑