java中如何通过相对路径声明Font--适合一直报找不到指定路径

回答来自ChatGPT

在 Java 中,可以使用相对路径来声明字体(`Font`)。相对路径是相对于当前工作目录或类路径的路径。

下面是使用相对路径声明字体的几种常见方法:

1. 相对于当前工作目录:
   

   String relativePath = "fonts/arial.ttf";
   String absolutePath = System.getProperty("user.dir") + "/" + relativePath;
   Font font = Font.createFont(Font.TRUETYPE_FONT, new File(absolutePath));

   在上述示例中,`relativePath` 是相对于当前工作目录的路径,`System.getProperty("user.dir")` 获取当前工作目录的绝对路径。通过将相对路径与当前工作目录拼接,得到字体文件的绝对路径。

2. 相对于类路径:
   

   String relativePath = "fonts/arial.ttf";
   InputStream inputStream = getClass().getClassLoader().getResourceAsStream(relativePath);
   Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream);

   在上述示例中,`relativePath` 是相对于类路径的路径。使用 `getClass().getClassLoader().getResourceAsStream()` 方法获取相对路径下的字体文件的输入流。

无论是相对于当前工作目录还是类路径,都需要确保字体文件的实际位置与相对路径的位置匹配。

请注意,以上示例仅展示了如何声明字体(`Font`)对象,并不涉及字体在 PDF 或其他渲染环境中的使用。在使用字体时,需要根据具体的需求和使用场景,参考相关的 API 文档和使用示例。

可以使用Java的图像处理库Java Advanced Imaging (JAI)和Java Image I/O API来编辑图片并添加水印和文字。 以下是一个简单的示例代码,可以在同一张图片添加水印和文字,并将结果保存到指定路径: ```java import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; public class ImageEditor { public static void main(String[] args) throws IOException { // 读取原始图片 String inputPath = "input.jpg"; RenderedOp image = JAI.create("fileload", inputPath); // 添加水印 BufferedImage waterMark = ImageIO.read(new File("watermark.png")); Graphics2D g2d = image.createGraphics(); g2d.drawImage(waterMark, 0, 0, null); g2d.dispose(); // 添加文字 String text = "Hello, World!"; Font font = new Font("Arial", Font.BOLD, 36); g2d = image.createGraphics(); g2d.setFont(font); g2d.setColor(Color.RED); g2d.drawString(text, 10, 50); g2d.dispose(); // 保存结果图片 String outputPath = "output.jpg"; ImageIO.write(image, "jpg", new File(outputPath)); } } ``` 在上面的代码,我们首先使用JAI库加载原始图片。然后使用Java标准库的`ImageIO`类读取水印图片,并使用`Graphics2D`类将其添加到原始图片上。接着,我们使用`Graphics2D`类将文字添加到原始图片上。最后,我们使用`ImageIO`类将修改后的图片保存到指定路径。 需要注意的是,上面的代码使用的字体和颜色都是硬编码的,可以根据需要进行修改。另外,如果原始图片和水印图片的尺寸不一致,需要先进行缩放操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值