java 2d 应用_JAVA 2D的一些应用

该博客介绍了如何使用Java进行图像处理,将文字和模板图合成到背景图片上。通过示例代码展示了如何创建Graphics2D对象,设置字体样式,以及绘制文字和模板图像到指定位置,最后保存合成后的图像。讨论了Java对物理字体和逻辑字体的支持,并解释了字体创建和绘制字符串的方法。
摘要由CSDN通过智能技术生成

template.gif

template.gif

程序处理部分是需要把输入的文字,和选择的template合成到bg.jpg里,在这里,我硬编码了输入文字到程序里,template使用已经准备好了的template.gif,当然,可以有更多的template提供给用户选择。bg.jpg是一张90×90的jpg全白色文件。这些我都暂时放在C盘根目录下。程序处理如下:

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.*;

public class TestDrawFont {

public static void main(String[] args) {

try {

BufferedImage image = ImageIO.read(new FileInputStream("c:\\bg.jpg"));

Graphics2D g = image.createGraphics();

BufferedImage image_template = ImageIO.read(new FileInputStream("c:\\template.gif"));

g.setColor(Color.red);

g.setFont(new Font("汉鼎简中黑",Font.ITALIC + Font.BOLD + Font.LAYOUT_LEFT_TO_RIGHT, 23));//写入签名

g.drawString("帅哥",22, image.getHeight() - 50);

g.drawString("印章",22, image.getHeight()-30);

g.drawImage(image_template, 5,image.getHeight() - 85, image_template.getWidth(null),image_template.getHeight(null), null);

g.dispose();

FileOutputStream out = new FileOutputStream("c:\\all.jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

} catch(Exception e) {

e.printStackTrace();

}

}

}

执行后的效果是:

all.jpg

补充一下:

Java 2 平台可以区分两种字体:物理 字体和逻辑 字体。

物理 字体是实际的字体库,包含字形数据和表,这些数据和表使用字体技术(如 TrueType 或 PostScript Type 1)将字符序列映射到字形序列。Java 2 平台的所有实现都支持 TrueType 字体;对其他字体技术的支持是与实现相关的。物理字体可以使用字体名称,如 Helvetica、Palatino、HonMincho 或任意数量的其他字体名称。通常,每种物理字体只支持有限的书写系统集合,例如,只支持拉丁文字符或只支持日文和基本拉丁文。可用的物理字体集合随配置的不同而不同。要求特定字体的应用程序可以使用 createFont 方法来捆绑这些字体,并对其进行实例化。

构造方法摘要

Font(String name, int style, int size)

根据指定名称、样式和点大小,创建一个新 Font

public abstract void drawString(String s,

float x,

float y)

public abstract void drawImage(BufferedImage img,

BufferedImageOp op,

int x,

int y)

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-06-05 18:17

浏览 1059

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值