java验证图片
① java怎么生成验证码图片
原理,在servlet中随机生成一个4位数字1000-9999
然后把这数字写入session
输出一个图片,上面写有这四个数字
在服务器端根据用户输入的数字和
session中的值比较。
注意比较结束后要清空session中的值
有很多人问到验证码的作用。
我作个简单的解释。
验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区还来说这个功能还是很有必要,也很重要。但我们还是提醒大家主要保护自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码。
还有就是注册时发表文章时加验证码,就防人用注册机,无限的自动注册,
package com.schoolwx.util;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
public class getImg extends HttpServlet {
private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体
//处理post
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
//取得一个1000-9999的随机数
String s="";
int intCount=0;
intCount=(new Random()).nextInt(9999);//
if(intCount<1000)intCount+=1000;
s=intCount+"";
//对session付值。
HttpSession session=request.getSession (true);
session.setAttribute("getImg",s);
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);
Graphics gra=image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);
gra.fillRect(1,1,33,12);
//设置字体色
gra.setColor(Color.black);
gra.setFont(mFont);
//输出数字
char c;
for(int i=0;i<4;i++) {
c=s.charAt(i);
gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置
}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
}
② java怎么显示网页验证码图片
这个的话,要涉及到jsp、servlet、网页,后台的请求了。我这里写一个给你看看吧。
https://github.com/chinameepo/com_dengc_grate_struts_learn/tree/master/Myfirst,这个是我的github仓库,里面刚好就有个一个我自己写的输出验证码的。
使用ide:myeclipse
jdk:1.6.0
服务器:tomcat
③ java 如何检测一张图片是否清晰
opencv 有 java 客户端的
④ Java中判断URL地址的图片是否有效
下面给你分享一个小工具类,可以帮到你
/**
*判断网络图片是否存在
*posturl图片地址链接
*/
(Stringposturl)throwsIOException{
URLurl=newURL(posturl);
HttpURLConnectionurlcon=(HttpURLConnection)url.openConnection();
urlcon.setRequestMethod("POST");
urlcon.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");
if(urlcon.getResponseCode()==HttpURLConnection.HTTP_OK){
System.out.println(HttpURLConnection.HTTP_OK+posturl
+":postedok!");
return"200";
}else{
System.out.println(urlcon.getResponseCode()+posturl
+":Badpost...");
return"404";
}
}
在上传图片的时候会生成一个图片地址链接,把这个链接调用这个工具类进行判断,如果返回200,则图片上传成功,返回其他则图片地址有误,或者上传失败。
⑤ java se怎么生成验证图片
用图片流,如果需要给留邮箱,但是要采纳和加分,
⑥ Java根据文件内容判断是否是图片。
这样,当把一个非图片文件的扩展名改为jpg、gif或者bmp时,就能绕过限制。所以必须得通过读取文件内容来进行判断。这里提供两种实现代码。1、ImageInputStream iis = ImageIO.createImageInputStream(resFile);//resFile为需被Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);if (!iter.hasNext()) {//文件不是图片 System.out.println("此文件不为图片文件");}2、BufferedImage bi = ImageIO.read(resFile);if(bi == null){ System.out.println("此文件不为图片文件");}
⑦ JAVA识别图片验证码
package com.he;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
public class CodeFact
extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
//画边框
g.setColor(new Color(33,66,99));
g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
// 将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110),
20 + random.nextInt(110))); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13 * i + 6, 16);
}
// 将认证码存入SESSION
HttpSession session = request.getSession();
session.setAttribute("rand", sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
//给定范围获得随机颜色
private Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255) {
fc = 255;
}
if (bc > 255) {
bc = 255;
}
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
}
你试试!!
⑧ java怎么实现获取其他网页的验证码图片,这要图片就可以了.
这个基本不可能实现,因为验证图片会随机加入噪音点,如果没噪音点是可以用机器人代码把字符取出来的
⑨ java如何判断文件是否为图片
java中提供了ImageInputStream类来对文件是否为图片进行判断,示例如下:
/**
*判断文件是否为图片<br>
*<br>
*@parampInput文件名<br>
*@parampImgeFlag判断具体文件类型<br>
*@return检查后的结果<br>
*@throwsException
*/
publicstaticbooleanisPicture(StringpInput,
StringpImgeFlag)throwsException{
//文件名称为空的场合
if(Check.isNull(pInput)){
//返回不和合法
returnfalse;
}
//获得文件后缀名
StringtmpName=pInput.substring(pInput.lastIndexOf(".")+1,
pInput.length());
//声明图片后缀名数组
StringimgeArray[][]={
{"bmp","0"},{"dib","1"},{"gif","2"},
{"jfif","3"},{"jpe","4"},{"jpeg","5"},
{"jpg","6"},{"png","7"},{"tif","8"},
{"tiff","9"},{"ico","10"}
};
//遍历名称数组
for(inti=0;i<imgeArray.length;i++){
//判断单个类型文件的场合
if(!Check.isNull(pImgeFlag)
&&imgeArray[i][0].equals(tmpName.toLowerCase())
&&imgeArray[i][1].equals(pImgeFlag)){
returntrue;
}
//判断符合全部类型的场合
if(Check.isNull(pImgeFlag)
&&imgeArray[i][0].equals(tmpName.toLowerCase())){
returntrue;
}
}
returnfalse;
}
⑩ java在页面上 验证上传的图片的尺寸 <input type="file" id="img1" name="img1" >
<input type="text" size="4" value="10" name="fileSizeLimit" id="fileSizeLimit"/> K
<input type="file" name="file1" id="file1" size="40" onchange="changeSrc(this)"/>
<img src="about:blank" id="fileChecker" alt="test" height="18"/>
//前面为网页
<script type="text/javascript">
var oFileChecker = document.getElementById("fileChecker");
function changeSrc(filePicker)
{
oFileChecker.src = filePicker.value;//读图片
}
//这个很重要,判断是否完全读完,否则判断图片大小不准确
oFileChecker.onreadystatechange = function ()
{
if (oFileChecker.readyState == "complete")
{
checkSize();
}
}
function checkSize()
{
var limit = document.getElementById("fileSizeLimit").value * 1024;
if (oFileChecker.fileSize > limit)
{
alert("too large");
}
else
{
alert("ok");
}
}
</script>