⑴ 如何利用java在图片上添加文字
// 读取模板图片内容
BufferedImage image = ImageIO.read(new FileInputStream("c:\\test.jpg"));
Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
// 设置字体
g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));// 写入签名
// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。
g.drawString("这是新加入的文字", 43, image.getHeight() - 10);
g.dispose();
FileOutputStream out = new FileOutputStream("c:\\test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
希望我的回答能帮助你 谢谢 呵呵 答案补充 肯定了 在一张纸上写字 肯定会自动换行的 否则写外面?逻辑都通不过去~ 答案补充 把你的意思说出了 是不是随便的写字然后就提交 就把字写在了图片上还是?多少字 有没有约束? 答案补充 g.drawString("这是新加入的文字", 43, image.getHeight() - 10);
在这个做处理 你规定了字体的大小 那么获取字符的长度*大小 一次判断不要大于宽度 否则image.getHeight() - 10++ 你试试 应该可以的 我这里没有Eclipse 答案补充 public class mains {
/**
* @param args
*/
private static int fontsize = 15;
static String jj(String str)
{
String sContent = str;
sContent=sContent.replaceAll(" "," ");
sContent=sContent.replaceAll("<br/>","/");
sContent=sContent.replaceAll("<br>","/");
return sContent;
} 答案补充 static void hh(String str)
{
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream("E:\\dian zi za /789.jpg"));
Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
// 设置字体
g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, fontsize));// 写入签名
// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。
String text = jj(str); 答案补充 String [] text1 = text.split("/");
int h = image.getHeight();
int w = image.getWidth();
for(int i=0;i<text1.length;i++)
{
g.drawString(text1[i],0,fontsize+i*fontsize);
}
g.dispose();
FileOutputStream out = new FileOutputStream("E:\\dian zi za /789.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close(); 答案补充 public static void main(String[] args) {
// TODO Auto-generated method stub
hh("sdakljsdhww<br/>asdasd<br/>a");
}
}
试试 可以换行 答案补充 关于 图片的尺寸以及字体是否超出 你自己试着解决下 不要过于依赖问
⑵ JAVA如何通过Graphics方法画出一个文本框
import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import javax.swing.*;//不规则图形的绘制public class IrregularShapeDemo extends JFrame {GeneralPath gPath= new GeneralPath(); //GeneralPath对象实例Point aPoint;//构造函数public IrregularShapeDemo() {super("不规则图形的绘制"); //调用父类构造函数enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK); //允许事件setSize(300, 200); //设置窗口尺寸setVisible(true); //设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}public void paint(Graphics g) { //重载窗口组件的paint()方法Graphics2D g2D = (Graphics2D)g; //获取图形环境g2D.draw(gPath); //绘制路径}public static void main(String[] args) {new IrregularShapeDemo();}protected void processMouseEvent(MouseEvent e) { //鼠标事件处理if(e.getID() == MouseEvent.MOUSE_PRESSED) {aPoint = e.getPoint(); //得到当前鼠标点gPath = new GeneralPath(); //重新实例化GeneralPath对象gPath.moveTo(aPoint.x,aPoint.y); //设置路径点}}protected void processMouseMotionEvent(MouseEvent e) { //鼠标运动事件处理if(e.getID() == MouseEvent.MOUSE_DRAGGED) {aPoint = e.getPoint(); //得到当前鼠标点gPath.lineTo(aPoint.x, aPoint.y); //设置路径gPath.moveTo(aPoint.x, aPoint.y);repaint(); //重绘组件}} }
⑶ 使用java.awt.Graphics中的drawString方法如何让文字换行
楼主,换行要自己换行的,可以根据Font测量字符占用的点数,然后判断是否该换行
⑷ java graphics 如何将文字拉伸或者改变宽度,在高度不变基础上,改变宽度,使字发生变化。
如果线段不多,用拉伸命令(stretch)试试看。(如若,您对我的答复满意,请点击左下角“好评”,谢谢您的采纳。)