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

如何利用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")

}

}

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

Java给图片加水印

/**

* 方法描述:<b>给图片增加水印.</b></br>

* 备 注: 在图片上写字符串

* 创 建 人: bo.gaobo</br>

* 创建日期: 2012-09-07</br>

* @param originalUrl 原始图片存储路径

* @param oldImg 原图片

* @param str 增加的字符串

* @param xLocation x坐标

* @param yLocation y坐标

* @param fontColor 颜色

* @param fontSize 字号

* @param typeFace 字体

* @param fileType 文件类型

*/

public static BufferedImage addStringToImg(String originalUrl, BufferedImage oldImg,String str,int xLocation,int yLocation, Color fontColor, int fontSize, String typeFace, String fileType) throws IOException{

FileOutputStream output = new FileOutputStream(originalUrl)

BufferedImage buffImg = oldImg

Graphics2D g = buffImg.createGraphics()

g = buffImg.createGraphics()

g.drawImage(buffImg, null, 0, 0)

g.setColor(fontColor)//设置字体颜色

g.setFont(new Font(typeFace, Font.PLAIN, fontSize))//设置字体和字号

g.drawString(str, xLocation, yLocation)//把字符串放在对应的坐标处

g.dispose()

ImageIO.write(buffImg, fileType, output)//设置文件类型

output.close()

return buffImg

}

1、首先你说的腾讯。163那种大型网站。都是做为背景来使用的。绝对不是直接用图片。因为网页设计的标准就是:不是实际需要加图片链接的图片。一律作为背景图片来使用。文字归文字。图片显示归图片显示。更加有利于搜索引擎收录。其次维护更加方便2、不做为背景却要在图片上加文字或表格。那就只能使用DIV+CSS的相对定位和绝对定位来实现层的重叠。具体的一句两句也说不清楚。建议看下DIV+CSS的排版相关教程。最简单的还是做为背景来使用。位置对不上只需要加个padding或者margin来调节位置就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11562690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存