社区
Web 开发
帖子详情
图+字=图?图+图=图?字+字=图?
zgf19821202
2007-05-23 08:34:39
各位XDJM好:
我最近遇到了一个问题,就是如何把图片和文字结合起来,生成新的图片,在java中有没有API可以很好的实现这样的效果呢?请大家不吝赐教,谢谢!
...全文
312
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.*
和生成验证码的原理差不多
三角洲行动拍卖行自动挂卡工具项目极简说明_这是一个专门为三角洲行动游戏设计的自动化脚本工具旨在解决玩家在单人或三人跑刀巴克什地
图
时匹配等待时间过长的问题通过利用匹配空闲时间自动.zip
三角洲行动拍卖行自动挂卡工具项目极简说明_这是一个专门为三角洲行动游戏设计的自动化脚本工具旨在解决玩家在单人或三人跑刀巴克什地
图
时匹配等待时间过长的问题通过利用匹配空闲时间自动.zip
【地理信息系统】基于Google Earth Engine的太阳能潜力评估工具:城市屋顶光伏资源量化分析系统设计
内容概要:本文提供了一个基于Google Earth Engine(EE)的太阳能潜力评估工具类SolarMappingUtils,旨在通过集成高程数据(DEM)、屋顶建筑信息(Open Buildings)、太阳辐照度数据(如MERRA-2)等多源遥感数据,实现区域级太阳能开发潜力的快速评估。该工具支持从坐标、GeoJSON文件或城市名称加载研究区域(AOI),并可计算坡度、坡向、高程等地形参数,构建排除陡坡等不适宜区域的掩膜,估算可用屋顶面积,并结合气候平均辐照数据生成太阳能潜力指标。代码结构模块化,预留了与外部数据集(如FABDEM、Sentinel-2)的接口,便于扩展应用。 适合人群:具备Python编程基础和地理信息系统(GIS)基础知识,熟悉遥感数据分析或从事可再生能源规划的相关研究人员和技术人员。 使用场景及目标:①用于城市或区域尺度的分布式光伏潜力初步评估;②支持基于地形和建筑分布的空间选址分析;③为太阳能资源调查提供自动化脚本工具; 阅读建议:此资源以实际工程代码形式呈现,建议结合Earth Engine平台进行实践操作,理解各函数的数据输入输出逻辑,并根据具体区域调整参数设置,同时注意依赖模块的正确配置与导入。
index.html
index
多微电网计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)
内容概要:本文围绕计及碳排放的多微网电能交互分布式运行策略展开研究,提出了一种基于交替方向乘子法(ADMM)的优化控制框架。该方法在保证各微网独立决策的前提下,实现多微网系统间的能量协同优化,兼顾经济性与低碳目标。研究构建了包含分布式电源、储能系统、可控负荷及碳排放成本的多微网运行模型,通过ADMM算法将全局优化问题分解为多个子问题进行分布式求解,有效提升了计算效率与系统隐私保护能力。文中结合Matlab仿真验证了所提策略在降低系统运行成本、减少碳排放以及提高可再生能源消纳方面的有效性,适用于大规模微网集群的协调运行场景。; 适合人群:具备电力系统优化、分布式能源管理或智能电网相关背景,熟悉Matlab编程与数学建模的科研人员及研究生。; 使用场景及目标:①应用于多微网系统中实现低碳、高效的能量交互与协同调度;②为含高比例可再生能源的配电网提供分布式优化解决方案;③支撑碳交易机制下的微网经济运行与政策制定研究。; 阅读建议:建议结合Matlab代码深入理解ADMM算法的实现细节,重点关注目标函数构造、耦合约束处理及收敛性分析部分,便于在实际项目中进行迁移与改进。
这是一个基于Python开发的哈夫币交易行自动化购买脚本项目_它通过模拟人类操作实现自动识别和购买游戏内钥匙商品_利用Tesseract-OCR进行屏幕文
字
识别以获取价格和商品信息.zip
这是一个基于Python开发的哈夫币交易行自动化购买脚本项目_它通过模拟人类操作实现自动识别和购买游戏内钥匙商品_利用Tesseract-OCR进行屏幕文
字
识别以获取价格和商品信息.zip
Web 开发
81,114
社区成员
341,728
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章