5个回答
展开全部
Image srcImg = ImageIO.read(new File("D:\\1.jpg"));
Graphics2D g = buffImg.createGraphics();
g.setFont(new Font(null, Font.BOLD, 16));
g.setColor(Color.BLACK);
g.drawString("hello " , 10, 20);
g.dispose();
FileOutputStream os = new FileOutputStream(targerPath);
ImageIO.write(buffImg, "JPG", os);
10,20 是图片上的坐标,想要什么位置自己调整。
Graphics2D g = buffImg.createGraphics();
g.setFont(new Font(null, Font.BOLD, 16));
g.setColor(Color.BLACK);
g.drawString("hello " , 10, 20);
g.dispose();
FileOutputStream os = new FileOutputStream(targerPath);
ImageIO.write(buffImg, "JPG", os);
10,20 是图片上的坐标,想要什么位置自己调整。
追问
这个我也有试过。不过有一点很奇怪,就是画上去了之后用其它东西盖住可以把画上去的东西抺掉。不知道为什么?
追答
不是很明白,怎么抹掉?
targerPath 是另一个文件了,你都生成文件了,怎么还会抹掉呢?
你是说你把这个图片放到了窗体上,其它的窗体移动到这个窗体上就会抹掉吗?
如果是这样,原因是窗体的repaint方法不会自动调用,原因我也不清楚。
有两个解决办法。
1.窗体添加焦点事件。窗体获得焦点时,调用repaint方法。
2.自己写一个JPanel类,在paint方法中加载图片。然后把这个JPanel放到窗体上,就不会出现抹掉的问题了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2016-06-01 · 知道合伙人数码行家
关注
展开全部
java 给图片添加文字
public class Dest{
public static void main(String [] a){
d.createMark("e8.jpg","e81.jpg","",null, 1,"",100);
//System.out.println(d.createMark("e8.jpg","e81.jpg","",null, 1,"",16));
}
public static boolean createMark(String filePath,String filePath1, String markContent,
Color markContentColor, float qualNum, String fontType, int fontSize) {
markContentColor = Color.gray;
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
//Image可以获得 输入图片的信息
int width = theImg.getWidth(null);
int height = theImg.getHeight(null);
//800 800 为画出图片的大小
BufferedImage bimage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
//2d 画笔
Graphics2D g = bimage.createGraphics();
g.setColor(markContentColor);
g.setBackground(Color.white);
//画出图片-----------------------------------
g.drawImage(theImg, 0, 0, null);
//画出图片-----------------------------------
//--------对要显示的文字进行处理--------------
markContent = "中国好男人 www.sego.com";// 文字
AttributedString ats = new AttributedString(markContent);
Font f = new Font(fontType, Font.BOLD, fontSize);
ats.addAttribute(TextAttribute.FONT, f, 0, markContent.length());
AttributedCharacterIterator iter = ats.getIterator();
//----------------------
g.drawString(iter, (int) (width - width+10), (int) (height - height/2));
//添加水印的文字和设置水印文字出现的内容 ----位置
g.dispose();//画笔结束
try {
//输出 文件 到指定的路径
FileOutputStream out = new FileOutputStream(filePath1);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(qualNum, true);
encoder.encode(bimage, param);
out.close();
} catch (Exception e) {
return false;
}
return true;
}
}
public class Dest{
public static void main(String [] a){
d.createMark("e8.jpg","e81.jpg","",null, 1,"",100);
//System.out.println(d.createMark("e8.jpg","e81.jpg","",null, 1,"",16));
}
public static boolean createMark(String filePath,String filePath1, String markContent,
Color markContentColor, float qualNum, String fontType, int fontSize) {
markContentColor = Color.gray;
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
//Image可以获得 输入图片的信息
int width = theImg.getWidth(null);
int height = theImg.getHeight(null);
//800 800 为画出图片的大小
BufferedImage bimage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
//2d 画笔
Graphics2D g = bimage.createGraphics();
g.setColor(markContentColor);
g.setBackground(Color.white);
//画出图片-----------------------------------
g.drawImage(theImg, 0, 0, null);
//画出图片-----------------------------------
//--------对要显示的文字进行处理--------------
markContent = "中国好男人 www.sego.com";// 文字
AttributedString ats = new AttributedString(markContent);
Font f = new Font(fontType, Font.BOLD, fontSize);
ats.addAttribute(TextAttribute.FONT, f, 0, markContent.length());
AttributedCharacterIterator iter = ats.getIterator();
//----------------------
g.drawString(iter, (int) (width - width+10), (int) (height - height/2));
//添加水印的文字和设置水印文字出现的内容 ----位置
g.dispose();//画笔结束
try {
//输出 文件 到指定的路径
FileOutputStream out = new FileOutputStream(filePath1);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(qualNum, true);
encoder.encode(bimage, param);
out.close();
} catch (Exception e) {
return false;
}
return true;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕,那个是一个整体,登录两个字也是图片的内容
更多追问追答
追问
之前我也是这样想的, 不过我找了QQ的一些自带的图片,上面没有。所以我想一定有什么方法可以画上去。
追答
java里有button控件吗?有的话是不是可以setText?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码如下:
Image srcImg = ImageIO.read(new File("D:\\1.jpg"));
Graphics2D g = buffImg.createGraphics();
g.setFont(new Font(null, Font.BOLD, 16));
g.setColor(Color.BLACK);
g.drawString("hello " , XX, XX);
g.dispose();
FileOutputStream os = new FileOutputStream(targerPath);
ImageIO.write(buffImg, "JPG", os);
XX处更改为图片坐标
Image srcImg = ImageIO.read(new File("D:\\1.jpg"));
Graphics2D g = buffImg.createGraphics();
g.setFont(new Font(null, Font.BOLD, 16));
g.setColor(Color.BLACK);
g.drawString("hello " , XX, XX);
g.dispose();
FileOutputStream os = new FileOutputStream(targerPath);
ImageIO.write(buffImg, "JPG", os);
XX处更改为图片坐标
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询