java Graphics2D绘制文字并居中并解决服务器乱码问题_graphics2d 文字居中_天才小小布的博客-程序员秘密

技术标签: java  

此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。

一、在图片上绘制文字

实例代码:

package com.test.testImage;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class Graphics2DTest {

    public static void main(String[] args) {   
        try {  
            String text = "文字居中";
            int width = 500;  
            int height = 400;  
            // 创建BufferedImage对象  
            BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);  
            // 获取Graphics2D  
            Graphics2D g2d = image.createGraphics();  
            // 画图  
            g2d.setBackground(new Color(255,255,255));  
            //g2d.setPaint(new Color(0,0,0));  
            g2d.setColor(Color.red);
            g2d.clearRect(0, 0, width, height);  
            Font font=new Font("宋体",Font.PLAIN,64);  
            g2d.setFont(font);  
            // 抗锯齿
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            // 计算文字长度,计算居中的x点坐标
            FontMetrics fm = g2d.getFontMetrics(font);
            int textWidth = fm.stringWidth(text);
            int widthX = (width - textWidth) / 2;
            // 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。 
            g2d.drawString(text,widthX,100);  
            // 释放对象  
            g2d.dispose();  
            // 保存文件      
            ImageIO.write(image, "jpg", new File("D:/test.jpg"));  
        }  
        catch(Exception ex) {  
            ex.printStackTrace();  
        }   
    }   
}

二、解决服务器部署图片文字乱码问题

在Windows系统上,文字显示正常,当项目部署到Linux系统上时,中文全部变成了口口口这种方框。我们使用的文字是Font font=new Font(“宋体”,Font.PLAIN,64);。出现的原因是因为在Linux上没有中文宋体或者没有中文其他文字的字体库,需要我们导入。
(1)查找Windows系统(本地)的文字包

查找路劲C:\Windows\Fonts
这里写图片描述

本地是一个ttc文件,我们需要修改文件后缀,改为ttf。
这里写图片描述

(2)将ttf文件导入到linux系统java的fonts包中。
这里写图片描述
注:路径是你Linux系统java安装的文件,根据你的安装目录查询

(3)重启java或者tomcat生效

参考文章:

Java Swing 字体居中显示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w410589502/article/details/72898184

智能推荐

react前端封装接口弹出错误_react+ts打包发布后报Minified React error ..这种错误_半张老头的博客-程序员秘密

最近接触到新的项目,然后发现使用的Antd4.1.4版本存在一个BUG会影响到业务系统,于是在各种考虑下还是升级到最新版4.5.0。然后就发现发布到线上测试环境就遇到某些页面会报错,但是本地又是好的,错误如下:Minified React error ...然后搜了一下,网上都表示是因为项目内部依赖的React版本存在多个导致的这个问题,可以通过配置webpack的externals属性,将所有的...

思科cisco交换机如何查找环路及解决方法_weixin_33889665的博客-程序员秘密

思科cisco交换机如何查找环路及解决方法如何能直观快速的判断cisco交换机是否出现了环路?并快速定位交换机环路的位置呢?这成为一个难题?环路查看目前没有什么最好的办法,只能通过一些信息直观查看。cisco环境下除了生成树还有很多预防环路的命令。环路会产生广播风暴,严重的会导致联络阻塞,环路出现时交换机会发出提示信息的,可以通过网管软件、察看日志服务器或直接登陆交换机发现...

《图解HTTP》笔记(二)_黑斑猫的博客-程序员秘密

《图解HTTP》笔记(二)第二章 简单的HTTP协议2.1 HTTP协议用于客户端和服务端之间的通信请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。2.2 通过请求和响应的交换达成通信客户端发 服务器回复2.3 HTTP是不保存状态的协议HTTP 协议自身不具备保存之前发送过的请求或响应的功能。HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。2.4 请求URI定位资源HTTP 协议使用 UR

yum安装mysql_yum 安装mysql_gzh-程序员灿灿的博客-程序员秘密

环境CentOS 7 64-bit MinimalMySQL 5.7配置yum源在 https://dev.mysql.com/downloads/repo/yum/ 找到 yum 源 rpm 安装包安装mysql源上图mysql安装包地址# 下载shell> wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# 安装 mysql 源shell> yum localinst

build.gradle配置_build.gradle 配置_不会飞的一条鱼的博客-程序员秘密

文章目录1 build.gradle配置1.1 project下的build.gradle1.2 module下的build.gradle2 Apk版本号的命名规则及配置方法2.1 命名规则2.2 配置方法2.3 生成apk命名3 Android studio 3.0以下及3.0以上gradle dependencies依赖的区别4 Dependencies依赖关键字的区别1 build.gra...

随便推点

iOS Masonry介绍与使用_Katy_Pei的博客-程序员秘密

由于苹果公司不断推出新的机型,所以大家都知道iOS开发中UI布局常常需要适配,同时也应该了解到苹果设备的适配主要是4,5,6,6plus这4种设备的适配。适配的方法有代码适配和使用xib添加约束,其中代码适配是用到autolayout但是官方推出的文档和Demo实在是繁琐,个人觉得还不如笨办法使用宽高比来的实在(但是计算宽高比以及获取设备需要的方法和代码太多),直到发现Masonry这个做适配的第

分布式ID的 9种生成方式_蔚1的博客-程序员秘密

本文旨在给为大家介绍,当下分布式ID生成的诸多方案,比较各方案间的优缺点,方便大家在不同业务场景时轻松搞定技术选型。9种 分布式ID生成如下:UUID数据库自增ID数据库多主模式号段模式Redis雪花算法(SnowFlake)滴滴出品(TinyID)百度 (Uidgenerator)美团(Leaf)适合人群:爱专研技术,有一定开发基础的程序员...

TPC-DS标准规范(2)_tpcds 表结构_唐犁的博客-程序员秘密

TPC-DS是一套决策支持系统测试基准,主要针对零售行业。提供99个SQL查询(SQL99或2003),分析数据量大,测试数据与实际商业数据高度相似,同时具有各种业务模型(分析报告型,数据挖掘型等等)。国内目前相关的翻译文章较少。本文尝试对官网的TPC BENCHMARK DS Standard Specification(下称“原文”)进行翻译。翻译主要参照的是2017年发布的2.6.0版本。现在可以在 http://www.tpc.org/tpc_documents_current_versions/c

苹果为 macOS 重大漏洞道歉;迅雷内讧股价暴跌;小米百度在一起 | 一周业界事_CSDN资讯的博客-程序员秘密

点击上方“CSDN”,选择“置顶公众号”关键时刻,第一时间送达!虽然本周业界事多“惨”,但周末了,还是要开心一下,毕竟雷军是真的开心的:一周业界事自家人打自家人,迅雷与子公司内讧公开互撕,四日数论公告战,目前仍未有结果;小米推出 IoT 开发者计划,与百度喜结良缘达成 IoT+AI 合作;美团点评 CEO 王兴公开宣布组织调整,从出行、零售杠上了阿里和滴

vscode下Python版本不对的情况解决_哈利呼呼的博客-程序员秘密

此前,均配置过python2.7和python3.7的环境,但是,诡异之处就在于,左下角选择的是python3.7,但是发现运行出来仍是2.7的版本,之后发现launch.json中path为2.7,就去百度,更改了setting.json和launch.json中的相关,此为查询python3.7所在地址此为配置setting.json和launch.json中相关到此,所有的都解决之后,运行,依旧是python2.7的版本,就很奇怪继而我同学有分享过来一个blog,诶!就这么解决了,虽然我现在还

.net LinkButton鼠标经过改变字体的样式_费劲_奋进的博客-程序员秘密

前台代码             使用 onmouseover和onmouseout的js事件 通过

推荐文章

热门文章

相关标签