如何利用java在图片上添加文字

Python016

如何利用java在图片上添加文字,第1张

// 读取模板图片内容

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 zhi/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=0i<text1.lengthi++)

{

g.drawString(text1[i],0,fontsize+i*fontsize)

}

g.dispose()

FileOutputStream out = new FileOutputStream("E:\\dian zi za zhi/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")

}

}

试试 可以换行 答案补充 关于 图片的尺寸以及字体是否超出 你自己试着解决下 不要过于依赖问

import java.awt.Color

import java.awt.Frame

import java.awt.Graphics

public class DrawString extends Frame{

private static final int spacing = 20 //文字与图片边界的空白

private static final int wordNum = 7 //文字字号

private Color strColor

private StringBuffer message

private int pictureWidth

private int pictureHight

public void paint(Graphics g){

Color c = g.getColor()

g.setColor(strColor)

StringBuffer msg = message

int strNumPerLine = (pictureWidth - spacing) / wordNum

int strLineNum = message.length() / strNumPerLine

for(int l=strLineNum,n=0 l<0l--){

msg.substring(n, strNumPerLine)

g.drawString(msg.toString(), wordNum, wordNum * strNumPerLine)

n = strNumPerLine

}

g.setColor(c)

//this.draw(g)

}

public DrawString(Color strColor, StringBuffer message, int pictureWidth, int pictureHight) {

this.strColor = strColor

this.message = message

this.pictureWidth = pictureWidth

this.pictureHight = pictureHight

}

}

图片上的文字是没法读取的,以为这涉及到图像处理。非常非常复杂!因为如果你非要读取图片上的文字,不是几行代码可以搞定的,首相从matlaB开始学,了解什么是图像处理。然后再开发相应的jar包。当然,你也可以使用相关的软件工具,比如识图软件,通过读取软件的反馈也算是读取了图片上的文字