我需要在另一个图像中剪切出文本形状的图像.我认为它最好显示在图像中.
这是一张猫的照片:

这是我要删除的文字:

生成的图像是这样的:

文本图像将始终为黑色并具有透明背景,并且生成的剪切图案也应具有透明背景.两个输入图像也将具有相同的大小.
我希望在顶部和底部围绕圆的半径绘制轮廓文本,文本的两个部分都面向正确的方向。
如何在AWT中绘制文本周围的轮廓?和用 Java 沿着曲线编写文本帮助我创建了代码(如下),该代码将逐个字符地绘制文本,其中每个字符独立旋转(有一些小的图形故障,这将是另一个问题的主题) 。
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class CreateTextStackOverflow {
private static final int EDGE_GAP = 10;
public static void main(String[] args) throws IOException {
BufferedImage bi = new BufferedImage(364,364,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D)bi.getGraphics();
Font font = new Font("Arial",Font.BOLD,48);
FontMetrics fm = g.getFontMetrics(font);
int imageWidth = bi.getWidth();
int …Run Code Online (Sandbox Code Playgroud) 我希望字符串具有不同的宽度,以便我设置Graphics2D的笔划,代码在这里:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class StrokeTest {
public static void main(String[] args) {
StrokeTest test = new StrokeTest();
test.createUI();
}
public void createUI(){
JFrame frame = new JFrame();
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
class MainPanel extends JPanel{
public MainPanel(){
setPreferredSize(new Dimension(400, 300));
}
protected void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.red);
g2d.setStroke(new BasicStroke(10));
g2d.drawString("I am a string", 100, 100);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用g2d.setStroke(new BasicStroke(10)) …
一开始,我想为我的 Jlabel 添加轮廓,我找到了这个来源/sf/answers/1646483751/并且它可以工作,但我无法更改轮廓厚度的大小。
我想使用相同的代码将标签文本的厚度更改为更厚(因为该代码很容易实现)...但我不明白如何更改轮廓的厚度...任何帮助都会被挪用
package Test2;
import java.awt.*;
import javax.swing.*;
public class OutlineLabel extends JLabel {
private Color outlineColor = Color.WHITE;
private boolean isPaintingOutline = false;
private boolean forceTransparent = false;
public OutlineLabel() {
super();
}
public OutlineLabel(String text) {
super(text);
}
public OutlineLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
}
public Color getOutlineColor() {
return outlineColor;
}
public void setOutlineColor(Color outlineColor) {
this.outlineColor = outlineColor;
this.invalidate();
}
@Override
public Color getForeground() {
if (isPaintingOutline) {
return outlineColor; …Run Code Online (Sandbox Code Playgroud)