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>