网站首页

docker 容器支持中文

中文Lee 2022/02/24 545人围观
docker  

客户有个需求:将table内容转换成图片显示;

后端语言采用java;

使用组件 HtmlImageGenerator


结果发现,windows下中文不乱码,但是用docker部署到linux就乱码了

所以先尝试不使用docker,结果还是乱码,然后给服务器安装中文字体(安装方法自行百度),安装好字体骤然见效!

继续使用docker,发现还是不行,

于是就有一个大胆的想法,将宿主机的字体拷贝到docker,还真别说,这种方法果然有效,

下面是具体操作

1:docker cp /usr/share/fonts/chinese/ 容器名称:/usr/share/fonts/chinese/

2:fc-cache -fv


下面附上转换方法



import gui.ava.html.image.generator.HtmlImageGenerator;
import org.apache.commons.codec.binary.Base64;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

@RestController
@RequestMapping(value = "/api/table2image")

public class Table2ImageController {

@RequestMapping(value = "/do")
public void table2image(HttpServletResponse response, HttpServletRequest request) throws IOException {
//tableContent是表格HTML内容,参数需要url转码一下
String table = request.getParameter("table");
if (table.equals("") || table == null) {
return;
}
String tableContent = table;
String htmlTemplate = "<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">" +
" <meta name=\"format-detection\" content=\"telephone=no,email=no,date=no,address=no\">" +
" <meta charset=\"UTF-8\">\n" +
" <title></title>\n" +
"<style>body{padding:0;margin:0;} td{font-size:24px;white-space: nowrap;background-color: #fff;line-height:1.8}</style></head>\n" +
"<body>";
htmlTemplate = htmlTemplate + tableContent + "</body>\n" +
"</html>";
HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
// Dimension ds = new Dimension(4010,4000);
// imageGenerator.setSize(ds);

//加载html模版
imageGenerator.loadHtml(htmlTemplate);
BufferedImage image = imageGenerator.getBufferedImage();
//取得图片的长和宽
int imgHeight = image.getHeight();
int imgWidth = image.getWidth();
//取得背景色的代码
int c = image.getRGB(3, 3);
BufferedImage bi = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_BGR); //设置有8RGB颜色分量图像
//逐点扫描image,把需要透明的颜色setRGB成控件背景色
for (int i = 0; i < imgWidth; ++i)//把原图片的内容复制到新的图片,同时把背景设为透明
{
for (int j = 0; j < imgHeight; ++j) {
if (image.getRGB(i, j) == c)
bi.setRGB(i, j, c & 0x00ffffff);//这里把背景设为透明
else
bi.setRGB(i, j, image.getRGB(i, j));
}
} //直接输出图像
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(bi, "jpg", stream);
response.setContentType("image/jpeg");//浏览器不要缓存
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
ImageIO.write(bi, "jpg", response.getOutputStream());
}

}

相关推荐

  • docker下php容器 curl本机无法访问【curl: (7) Failed to connect to x.x.x.x port 80: Host is unreachable)】

    问题描述:centos 7.9 服务器上 使用docker容器部署了php环境,但是使用curl的时候 ,访问其他机器ip正常,但是curl本机ip 出现 curl: (7) Failed to connect to x.x.x.x port 80: Host is unreachable...

  • PHP性能优化方案

    常用性能优化方案1.使用单引号替换双引号,单引号在运行的时候不检查运行引号内部的变量,执行效率是双引号的两倍;2.使用PHP内置的数组操作方法,PHP内置的数组操作方法的运行效率是自行编写代码的10倍以上;3.使用字符串函数替换正则函数,例如:使用 str_replace 替换&...

  • Linux内核调优(大并发场景下)

    为了让系统能够支持更大的并发,除了必须安装event扩展(或libevent扩展)之外,优化linux内核也是重中之重,以下优化每一项都非常非常重要,请务必按逐一完成。打开文件 /etc/sysctl.conf,增加以下设置#该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除 ...

  • php7下安装event扩展

    一·、安装支持库libevent,需要编译高版本(这里以最新版本release-2.1.8-stable为例)1. wget -c https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent...

  • centos7刚安装的docker 1.13.1启动报错Docker failed to start

    yum install docker device-mapper-event-libs -y   安装dockersystemctl start docker 报错解决 关闭seliunx  修改文件 /etc/sysconfig/docker加上=false...

  • java 生成缩略图 imageIO异常:Unsupported Image Type, 不支持图像类型【附解决办法】

    最近再做图片生成缩略图功能,发现大部分的图片都可以生成缩略图,但是偶尔有几个图片会报异常:Unsupported Image Type;几经折腾,发现报异常的图片格式为CMYK 格式,我们常见的图片格式都是RGB格式的,所以我们要把CMYK格式的图片转换成RGB格式的,网上有些办法转化后图片颜色会丢...

  • 编程语言排行榜2019年12月 TIOBE编程语言排行榜2019年最新版

     TIOBE已经公布了编程语言排行榜2019年12月的数据,编程语言12月的排名有了新的变化,Java比C的指数高了2%,与上个月的0.2%相比,前进很多,Python继续占领第三名,下面一起来看看2019年12月编程语言排行榜。  2019年12月编程语言排行榜看点:  首先,Java比上个月的指...

  • centos7通过yum安装JDK1.8

    安装之前先检查一下系统有没有自带open-jdk命令:rpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gcj如果没有输入信息表示没有安装。如果安装可以使用rpm -qa | grep java |&n...