下面是可以运行的例子:
public void testImageMail(){//创建和环境有关的Session对象. 该session对象中包含了连接邮件服务器的地址.. 端口.. 协议
Properties properties = new Properties()
//指定发送的协议
properties.setProperty("mail.transport.protocol", "smtp")
//指定邮件服务器的地址
properties.setProperty("mail.host", "127.0.0.1")
//通过javamail发送邮件的时候,会把具体的发送命令打印出来
properties.setProperty("mail.debug", "true")
Session session = Session.getDefaultInstance(properties)
//创建一个代表一封邮件的Message对象
Message message = new MimeMessage(session)
//设置发件人...
try {
message.setFrom(new InternetAddress("xxxxxx"))
/** BCC:密送CC:抄送To:发送 */
message.setRecipient(RecipientType.TO, new InternetAddress("xxxxxx"))
//设置邮件的主题
message.setSubject("这是一个简单的邮件")
Multipart multipart = new MimeMultipart("mixed")
//创建一个装显示图片的html
MimeBodyPart html = new MimeBodyPart()
//要使用cid来指定具体的资源id
html.setContent("<img src='cid:xxxxxxx'>", "text/html")
//创建一个图片的mimebodypart
MimeBodyPart image = new MimeBodyPart()
//将一个图片做具体的数据出过来
image.setDataHandler(new DataHandler(new FileDataSource(new File("F:\\xxx.gif"))))
image.setContentID("xxxxxxx")
multipart.addBodyPart(html)
multipart.addBodyPart(image)
//设置一个复杂类型的邮件内容
message.setContent(multipart)
//可以通过Session对象找得到发送对象Transport...
Transport transport = session.getTransport()
//通过发送对象去连接邮件服务器... 提供链接服务器的用户名而不是邮件的地址,不带@符号的
transport.connect("xxxxxx", "xxxxxx")
//连接上后发送邮件(Message),发送给指定的地址
transport.sendMessage(message, message.getAllRecipients())
//关闭连接
transport.close()
} catch (Exception e) {
e.printStackTrace()
}
}
// 读取模板图片内容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")
}
}
试试 可以换行 答案补充 关于 图片的尺寸以及字体是否超出 你自己试着解决下 不要过于依赖问
在JFRAME中设置一个JPANEL对象,重写一下JPANEL对象的paintComponent方法。如下:
JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
ImageIcon icon = new ImageIcon("D:\\timebg.jpg")
// 图片随窗体大小而变化
g.drawImage(icon.getImage(), 0, 0,
frame.getSize().width,
frame.getSize().height,
frame)
}
}
panel.setOpaque(false)//设置透明。
2
在上面中的panel对象上添加多个其它具体的Jpanel对象。
在每一个Jpanel对象中又可以设置单独的布局方式。
这样就可以完整的表达这个界面内容了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)