今天在逛oschina的时候看见里面有一个代码分享的功能还不错,红薯老大贴出了一段代码个人觉得很实用转出来分享下。
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.IndexColorModel;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
/**
* 根据文本生成图片的工具
* @author Winter Lau
* @date 2009-7-30 下午12:58:26
*/
public class TextImageUtils {
private final static IndexColorModel icm = createIndexColorModel();
static IndexColorModel createIndexColorModel() {
BufferedImage ex = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_INDEXED);
IndexColorModel icm = (IndexColorModel) ex.getColorModel();
int SIZE = 256;
byte[] r = new byte[SIZE];
byte[] g = new byte[SIZE];
byte[] b = new byte[SIZE];
byte[] a = new byte[SIZE];
icm.getReds(r);
icm.getGreens(g);
icm.getBlues(b);
java.util.Arrays.fill(a, (byte)255);
r[0] = g[0] = b[0] = a[0] = 0; //transparent
return new IndexColorModel(8, SIZE, r, g, b, a);
}
/**
* 生成电子邮件图片
* @param email
* @param out
* @throws IOException
*/
public static void MakeEmailImage(String email, OutputStream out) throws IOException {
int height = 22;
BufferedImage bi = new BufferedImage(255,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)bi.getGraphics();
Font mFont = new Font("Verdana", Font.PLAIN, 14);
g.setFont(mFont);
g.drawString(email, 2, 19);
FontMetrics fm = g.getFontMetrics();
int new_width = fm.charsWidth(email.toCharArray(), 0, email.length()) + 4;
int new_height = fm.getHeight();
BufferedImage nbi = new BufferedImage(new_width, new_height,
BufferedImage.TYPE_BYTE_INDEXED, icm);
Graphics2D g2 = (Graphics2D)nbi.getGraphics();
g2.setColor(new Color(0,0,0,0));//透明
g2.fillRect(0,0,new_width,new_height);
g2.setFont(mFont);
g2.setColor(new Color(200,0,0));
g2.drawString(email, 2, new_height-4);
ImageIO.write(nbi, "gif", out);
}
/**
* 生成电话号码图片
* @param phone
* @param out
* @throws IOException
*/
public static void MakePhoneImage(String phone, OutputStream out) throws IOException {
int height = 22;
BufferedImage bi = new BufferedImage(255,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)bi.getGraphics();
Font mFont = new Font("Verdana", Font.BOLD, 20);
g.setFont(mFont);
g.drawString(phone, 2, 19);
FontMetrics fm = g.getFontMetrics();
int new_width = fm.charsWidth(phone.toCharArray(), 0, phone.length()) + 4;
int new_height = fm.getHeight();
BufferedImage nbi = new BufferedImage(new_width, new_height,
BufferedImage.TYPE_BYTE_INDEXED, icm);
Graphics2D g2 = (Graphics2D)nbi.getGraphics();
g2.setColor(new Color(0,0,0,0));//透明
g2.fillRect(0,0,new_width,new_height);
g2.setFont(mFont);
g2.setColor(new Color(200,0,0));
g2.drawString(phone, 2, new_height-4);
ImageIO.write(nbi, "gif", out);
}
/**
* 生成产品关键特征
* @param attribute
* @param out
* @throws IOException
*/
public static void MakeProductAttribute(String attribute, OutputStream out) throws IOException{
int height = 22;
BufferedImage bi = new BufferedImage(255,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)bi.getGraphics();
Font mFont = new Font("宋体", Font.BOLD, 13);
g.setFont(mFont);
g.drawString(new String(attribute), 2, 19);
FontMetrics fm = g.getFontMetrics();
int new_width = fm.charsWidth(attribute.toCharArray(), 0, attribute.length()) + 4;
int new_height = fm.getHeight();
BufferedImage nbi = new BufferedImage(new_width, new_height,
BufferedImage.TYPE_BYTE_INDEXED, icm);
Graphics2D g2 = (Graphics2D)nbi.getGraphics();
g2.setColor(new Color(0,0,0,0));//透明
g2.fillRect(0,0,new_width,new_height);
g2.setFont(mFont);
g2.setColor(new Color(200,0,0));
g2.drawString(attribute, 2, new_height-4);
ImageIO.write(nbi, "gif", out);
}
public static void main(String[] args) throws IOException {
String num = "020-85551111";
FileOutputStream fos = new FileOutputStream("D:/phone.gif");
try{
MakePhoneImage(num, fos);
}finally{
fos.close();
}
String email = "xxxxx@oschina.net";
FileOutputStream fos2 = new FileOutputStream("D:/email.gif");
try{
MakeEmailImage(email, fos2);
}finally{
fos2.close();
}
}
}
分享到:
相关推荐
国CMS6.0加密电话EMAIL并图片显示插件 插件简介:通过加密来对电话,EMAIL进行加解密,最后以图片形式输入 。 这个作用主要是对电话,EMAIL进行加行图片显示,以防别人通过搜索引擎搜索出来这些信息。 更多的...
在这里,你可以实现图片预览功能,比如使用`ImageView`或者第三方库如`PhotoView`来显示大图,并支持缩放操作。 ```java private void showFullScreenImage(String imageUrl) { PhotoView photoView = new ...
为了解决这个问题,开发者通常会采用一些技巧,例如不完整显示、使用图片代替、编码或使用JavaScript来动态生成电子邮件链接。 在JavaScript中,有几种常见的方法可以用来保护电子邮件地址: 1. **字符替换**:将...
在C#编程中,将Email地址转换为图片显示是一种防止垃圾邮件机器人自动抓取Email地址的有效策略。通过将文本邮箱地址转化为不可读的图像格式,可以有效地保护隐私,避免垃圾邮件。以下是一个C#实现这一功能的具体步骤...
相反,`email.charset`处理字符集转换,确保正确显示不同语言的文本。 在"email-4.0.2"版本中,可能包含以下改进和修复: 1. **兼容性提升**:更新可能针对Python的新版本进行了优化,确保在最新的Python环境下...
不过,需要注意的是,如果邮件中包含外部资源(如图片链接),收件人的邮件客户端可能需要开启显示远程内容才能正确显示这些元素。 为了进一步优化,我们可以考虑以下几个方面: 1. **错误处理**:在上述示例中,...
4. **图片显示**:在邮件中,图片可能默认为不显示,需要设置`display:block`等属性来确保正确显示。 5. **字体选择**:邮件客户端可能有自己的默认字体,`normalize.email.css`会指定一个跨平台的通用字体家族,如...
4. **图片优化**:"image文件夹"中包含的图片文件应进行优化,减小文件大小以加快加载速度,同时提供替代文本(alt属性),以便在图片无法显示时传达信息。 5. **CSS使用**:由于邮件客户端对CSS的支持程度不一,...
为了确保邮件中的图片和特殊字符能正确显示,HTML邮件通常使用MIME(多用途互联网邮件扩展)编码。这包括将HTML内容作为text/html部分,而图片和其他附件作为相关联的MIME部分。 4. 测试与验证: 由于邮件客户端的...
JAVA实现的Email客户端,感觉还好用,有兴趣的可以研究一下
此时在下面左边的列表里面会显示出生成要下载的图片地址列表。 第六步:点击“选择存储位置”按钮,找到一个位置,用来存放配置文件及要下载的图片的位置。不要忘记文件名处要填写一个名字,自己随意起就好了。填好...
Email应用可以处理附件,支持多种文件格式,如文本、图片、PDF等。源码中包含解析和编码解码的逻辑,如Base64编码、MIME类型识别等。 8. **通知与推送**: 当有新邮件到达时,应用会通过NotificationManager展示...
4. **优化邮件格式**:使用HTML格式的邮件,包含清晰的图片、简洁的文字和明显的CTA(Call-to-Action)按钮,以提升用户体验。同时,确保邮件在不同设备和邮箱客户端上都能正常显示。 5. **设置合理的发送频率**:...
Email营销在外贸行业中扮演着至关重要的角色,尤其对于企业初创阶段,它是一种高效且成本低廉的市场推广方式。然而,许多外贸从业者面临的一个主要问题是找不到目标客户的有效邮箱地址。为了解决这一问题,这里将...
此外,使用测试工具(如 Litmus、Email on Acid 或 Campaign Monitor)来预览邮件在不同客户端中的显示效果。 6. MIME类型 发送HTML Email时,需要正确设置MIME类型。HTML邮件通常使用`text/html`作为内容类型,而...
很多功能尚需完善,比如内置浏览器,以备图片下载功能验证使用;图片预览,下载/抓屏进度图片化显示等。我因为时间关系,没做到很完善,并且当抓屏图片过大并数量过多(25*25以上)时,进行图片拼接的时候内存占用问题...
【标题】"EmailDemo.rar" 是一个压缩包文件,它包含了一个Android应用程序示例,用于演示如何在Android平台上正确地调用系统邮件应用发送电子邮件。这个项目可能是一个开发者分享的教程或者代码片段,用于帮助其他...
发送带图片邮件与发送带附件的邮件类似,只是需要将图片作为内联资源,以便在邮件正文中显示。可以使用`MIMEImage`来创建图片部分,并将其添加到`MIMEMultipart`对象中,同时设置`Content-ID`属性,以便在HTML内容中...
当用户输入的数据不符合规定时,程序应能够提供清晰的错误消息反馈给用户,如代码中的`JOptionPane.showMessageDialog`方法就被用来显示错误消息对话框,告知用户密码长度不足的情况。 ### 总结 从这段描述和代码...