社区
Web 开发
帖子详情
图+字=图?图+图=图?字+字=图?
zgf19821202
2007-05-23 08:34:39
各位XDJM好:
我最近遇到了一个问题,就是如何把图片和文字结合起来,生成新的图片,在java中有没有API可以很好的实现这样的效果呢?请大家不吝赐教,谢谢!
...全文
296
9
打赏
收藏
图+字=图?图+图=图?字+字=图?
各位XDJM好: 我最近遇到了一个问题,就是如何把图片和文字结合起来,生成新的图片,在java中有没有API可以很好的实现这样的效果呢?请大家不吝赐教,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zgf19821202
2007-05-24
打赏
举报
回复
不是简单的做验证码,图上增加文字,可以采用上面朋友说的方法实现,但是图+图的处理方式,就不能那么简单的来做了,比如两张图A和B,如果要让图B叠加在图A的某个区域上,不是完全的覆盖,而且这个区域是可以自己来控制的,这样的效果不知道该怎么来做?
For_suzhen
2007-05-24
打赏
举报
回复
就是做验证码吧
tanp520
2007-05-24
打赏
举报
回复
用过滤器可以实现
zhaochunhui
2007-05-23
打赏
举报
回复
package test.csdn;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.text.AttributedString;
import java.awt.font.TextAttribute;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.imageio.ImageIO;
import java.text.AttributedCharacterIterator;
public class TestImg {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String filePath = "c:\\AnnotationNotes.jpeg";
ImageIcon imgIcon = new ImageIcon(filePath);
Image aImg = imgIcon.getImage();
int width = aImg.getWidth(null);
int height = aImg.getHeight(null);
/*
* TYPE_INT_BGR表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 或 Solaris 风格的 BGR
* 颜色模型,具有打包为整数像素的 Blue、Green 和 Red 三种颜色
*/
BufferedImage bufferImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_BGR);
Graphics2D grap = bufferImage.createGraphics();
/* 设置字体颜色 */
grap.setColor(Color.RED);
/* 设置背景颜色 */
grap.setBackground(Color.white);
grap.drawImage(aImg, 0, 0, null);
/* 创建要添加的水印文字 */
AttributedString info = new AttributedString("添 加 的 水 印 文字");
/* 设置字体 */
Font f = new Font("宋体", Font.ITALIC, 28);
info.addAttribute(TextAttribute.FONT, f, 0, "添 加 的 水 印 文字".length());
AttributedCharacterIterator acIter = info.getIterator();
/*
* 使用 Graphics2D 上下文的当前 Paint,呈现指定迭代器的文本。迭代器必须为每个字符指定字体。首字符的基线位于用户空间中的
* (x, y) 位置处
*/
grap.drawString(acIter, 100, 100);
/* 释放此图形的上下文并释放它所使用的所有系统资源 */
grap.dispose();
try {
FileOutputStream out = new FileOutputStream(filePath);
ImageIO.write(bufferImage, "JPEG", out);
} catch (FileNotFoundException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
joegu
2007-05-23
打赏
举报
回复
看到个验证码的,你可能有用
<%@ page contentType="image/jpeg"%>
<%@ page import="java.awt.*"%>
<%@ page import="java.awt.image.*"%>
<%@ page import="java.util.*"%>
<%@ page import="javax.imageio.*"%>
<%
//在内存中创建图象
int iWidth=130,iHeight=18;
BufferedImage image=new BufferedImage(iWidth,iHeight,BufferedImage.TYPE_INT_RGB);
//获取图形上下文
Graphics g=image.getGraphics();
//设定背景色
g.setColor(Color.white);
g.fillRect(0,0,iWidth,iHeight);
//画边框
g.setColor(Color.black);
g.drawRect(0,0,iWidth-1,iHeight-1);
//取随机产生的认证码(4位数字)
String rand=request.getParameter("Rand");
rand=rand.substring(0,rand.indexOf("."));
switch(rand.length())
{
case 1:rand="000"+rand;break;
case 2:rand="00"+rand;break;
case 3:rand="0"+rand;break;
default:rand=rand.substring(0,4);break;
}
//将认证码存入SESSION
session.setAttribute("Rand",rand);
//将认证码显示到图象中
g.setColor(Color.black);
g.setFont(new Font("Times new Roman",Font.PLAIN,18));
g.drawString(rand,10,15);
//随机产生88个干扰点,使图象中的认证码不易被其它程序探测到
Random random=new Random();
for(int iIndex=0;iIndex<88;iIndex++)
{
int x=random.nextInt(iWidth);
int y=random.nextInt(iHeight);
g.drawLine(x,y,x,y);
}
//图象生效
g.dispose();
//输出图象到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
%>
输出时应用验证码
<script>document.write("<img border=0 src='/image.jsp?Rand="+Math.random()*10000+"'>");</script><br>
输认证码: <input name="Rand" maxlength=4 size="10"><br>
登录认证:
String Rand=request.getParameter("Rand");
String strRand=(String)session.getAttribute("Rand");
if(!strRand.equals(Rand))
{
//未通过;
}
iwlk
2007-05-23
打赏
举报
回复
把字写在图上就行了吧
infon
2007-05-23
打赏
举报
回复
没做过,,帮顶
吴恒
2007-05-23
打赏
举报
回复
把字写在图上就行了吧
9441
2007-05-23
打赏
举报
回复
使用java.awt.image.*,javax.imageio.*
和生成验证码的原理差不多
asp
图
片验证码,随机产生如“1+2=”这样的验证
图
片
代码可直接另存为一个文件,如vcode.asp,然后通过
图
片的方式调用改文件,如<img src="vcode.asp" border=0 align="absmiddle" />,然后在提交后的处理页面里验证session("checkcode")的值就可以了。程序就是“5+6=...
D触发器及其应用实验报告.pdf
74LS74是双D触发器(上升沿触发的边沿D触发器),其管脚
图
如下: 其功能表如下: ○构成二分频器:用一片74LS74即可构成二分频器。实验电路
图
如下: ○构成四分频器:需要用到两片74LS74。实验电路
图
如下: 2. ...
青岛版一年级数学上册第三单元测试题精选.doc
这部分题目要求学生观察
图
片,根据
图
片中的物体数量进行加减运算,例如: 1. 有3个黑色圆形,2个白色圆形,4个黑色圆形,问总共多少个圆形?答案是3+2+4=9个圆形。 2. 有9个三角形,最后等于8个三角形,问去了多少个...
20以内练习题6.doc
这份资料是针对小学低年级学生的数学练习,涵盖了基础的数学概念和运算,包括计数、比较、加减法、位置与顺序以及简单的
图
形认知。以下是根据题目内容解析的知识点: 1. **计数与顺序**:题目要求填入数
字
序列中的...
第六届蓝桥杯软件大赛A组预赛
(或参见【
图
1.jpg】) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。 你能算出另一组合适的解吗? a,b,c=10,18,24 请填写该解中最小的数
字
。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明...
Web 开发
81,122
社区成员
341,743
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章