社区
Web 开发
帖子详情
图+字=图?图+图=图?字+字=图?
zgf19821202
2007-05-23 08:34:39
各位XDJM好:
我最近遇到了一个问题,就是如何把图片和文字结合起来,生成新的图片,在java中有没有API可以很好的实现这样的效果呢?请大家不吝赐教,谢谢!
...全文
291
9
打赏
收藏
图+字=图?图+图=图?字+字=图?
各位XDJM好: 我最近遇到了一个问题,就是如何把图片和文字结合起来,生成新的图片,在java中有没有API可以很好的实现这样的效果呢?请大家不吝赐教,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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.*
和生成验证码的原理差不多
神经网络与量子计算的交叉研究.pptx
神经网络与量子计算的交叉研究.pptx
非线性端口 MEMS 麦克风的 Simscape 模型.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
用于超声成像和仿真的 MATLAB 工具箱.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
HFI高频注入仿真—matlab.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
北京工商大学上网登陆版源码.zip
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
Web 开发
81,091
社区成员
341,718
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章