到,因而可以有效地防止機器人程序使用OCR技術識別驗證碼信息;而且本申請所提供的驗證碼圖片生成方法,根據(jù)生成的隨機數(shù),從算盤圖片庫中選取對應的圖片,再將圖片拼接生成驗證碼圖片,過程簡單、資源耗費少,因而可以有效地提高驗證碼圖片生成的速度和效率,使驗證碼圖片可以在界面或網(wǎng)頁中快速顯示,而且算珠檔圖片中的算珠較之扭曲的數(shù)字和符號有更清晰可辨的視覺效果,從而使用戶更易識別驗證碼信息,提高用戶體驗。
[0161]通過以上的方法實施例的描述,所屬領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本申請的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,并存儲在一個存儲介質中,包括若干指令用以使得一臺智能設備執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁碟或者光盤等各種可以存儲數(shù)據(jù)和程序代碼的介質。
[0162]與本申請的第一方面相應,在本申請的第二方面,提供一種驗證碼圖片生成裝置。圖7為本申請一示例性實施例示出的一種驗證碼圖片生成裝置的框圖。如圖7所示,所述裝置可以包括:
[0163]數(shù)字生成模塊U701,用于生成一個預設長度的數(shù)字;
[0164]數(shù)位分解模塊U702,與U701連接,用于獲取所述數(shù)字每個數(shù)位的數(shù)值;
[0165]算珠檔圖片選取模塊U703,與U702連接,用于根據(jù)每個數(shù)位的數(shù)值分別在預先建立的算盤圖片庫中選取對應的算珠檔圖片,所述算珠檔圖片中算珠所表示的數(shù)值與數(shù)位的數(shù)值對應;
[0166]排列模塊U704,與U703連接,用于將算珠檔圖片按預設順序排列;
[0167]合成模塊U705,與U704連接,用于拼接按預設順序排列的算珠檔圖片,生成驗證碼圖片。
[0168]其中,所述排列模塊U704用于將算珠檔圖片按對應的數(shù)位從大到小的順序從左到右排列,或者將算珠檔圖片按對應的數(shù)位從大到小的順序從右到左排列。
[0169]圖8為本申請另一示例性實施例示出的一種驗證碼圖片生成裝置的框圖。如圖8所示,所述裝置可以包括:
[0170]數(shù)字生成模塊U801,用于生成一個預設長度的數(shù)字;
[0171]數(shù)位分解模塊U802,與U801連接,用于獲取所述數(shù)字每個數(shù)位的數(shù)值;
[0172]算珠檔圖片選取模塊U803,與U802連接,用于根據(jù)每個數(shù)位的數(shù)值分別在預先建立的算盤圖片庫中選取對應的算珠檔圖片,所述算珠檔圖片中算珠所表示的數(shù)值與數(shù)位的數(shù)值對應;
[0173]小數(shù)點圖片選取模塊U804,與U801連接,用于在預先建立的算盤圖片庫中隨機選取小數(shù)點圖片;
[0174]排列模塊U805,與U803連接,用于將算珠檔圖片按預設順序排列;
[0175]小數(shù)點圖片插入模塊U806,與U801、U804和U805連接,用于根據(jù)所述數(shù)字中小數(shù)點的位置,在按預設順序排列的算珠檔圖片之間對應的位置插入小數(shù)點圖片。
[0176]零檔圖片選取模塊U807,用于在預先建立的算盤圖片庫中隨機選取預設個數(shù)表示整數(shù)0的算珠檔圖片。
[0177]邊框圖片選取模塊U808,用于在預先建立的算盤圖片庫中隨機選取右邊框圖片和左邊框圖片。
[0178]合成模塊U809,與U805、U806、U807和U808連接,用于拼接按預設順序排列的算珠檔圖片,生成驗證碼圖片。
[0179]其中,小數(shù)點圖片選取模塊U804與U801連接,當U801隨機生成的為小數(shù)時,小虎點圖片選取模塊啟動,在預先建立的算盤圖片庫中隨機選取小數(shù)點圖片。
[0180]其中,小數(shù)點圖片插入模塊U806,與U801、U804和U805連接,用于根據(jù)U801隨機生成的數(shù)字中小數(shù)點的位置,在U805按預設順序排列的算珠檔圖片之間對應的位置插入U804選取的小數(shù)點圖片。
[0181]其中,所述排列模塊U805用于將算珠檔圖片按對應的數(shù)位從大到小的順序從左到右排列,或者將算珠檔圖片按對應的數(shù)位從大到小的順序從右到左排列。
[0182]其中,所述合成模塊,包括:
[0183]算珠檔圖片拼接模塊,用于拼接按預設順序排列的算珠檔圖片;
[0184]零檔拼接子模塊,用于將表示整數(shù)0的算珠檔圖片分組拼接在按預設順序排列并拼接的算珠檔圖片的兩側;
[0185]邊框拼接子模塊,用于將右邊框圖片和左邊框圖片分別拼接在表示整數(shù)0的算珠檔圖片的最右側和最左側。
[0186]小數(shù)點圖片拼接子模塊,用于將小數(shù)點圖片與相鄰兩側的算珠檔圖片拼接。
[0187]本申請實施例所述的驗證碼圖片生成裝置,在一種可能的實施方式中,還包括:
[0188]加噪模塊,用于對驗證碼圖片進行加噪處理。
[0189]為了描述的方便,描述以上裝置時以功能分為各種模塊分別描述。當然,在實施本申請時可以把各模塊的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
[0190]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的裝置及系統(tǒng)實施例僅僅是示意性的,其中所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡模塊上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0191]在本申請的第三方面,提供一種驗證碼輸入方法。圖9為本申請一示例性實施例示出的一種驗證碼輸入方法的流程示意圖。如圖9所示,所述方法包括:
[0192]在步驟S901中,獲取用戶對交互式算盤圖形的操作信息和在交互式算盤圖形的操作坐標,所述操作信息包括點擊和拖動;
[0193]其中,所述交互式算盤圖形預先建立,在界面或網(wǎng)頁的驗證碼輸入?yún)^(qū)域顯示,供用戶操作以輸入驗證碼,或者預先隱藏,當用戶點擊驗證碼輸入窗口或者驗證碼輸入圖標時,顯示于驗證碼輸入窗口中,或者以彈出窗口的方式顯示。交互式算盤圖像以彈出窗口的方式可以節(jié)約界面或網(wǎng)頁的顯示空間,由于通常驗證碼輸入窗口或者輸入?yún)^(qū)域較小,使用彈出窗口的方式可以顯示較大的算盤圖形,方便用戶的操作。
[0194]所述交互式算盤圖形可以為flash動畫,其顯示內(nèi)容為傳統(tǒng)的算盤。建立交互式算盤圖形時,根據(jù)圖形大小建立圖形的坐標系統(tǒng)。當用戶對交互式算盤圖形進行操作時,例如點擊或拖動圖形中的算珠時,交互式算盤圖形獲取鼠標設備的對應動作信息,從而得到用戶的操作信息,并相應地獲取在圖形的坐標系統(tǒng)中該操作發(fā)生位置的坐標,當終端為觸屏式移動終端時,可以通過觸摸和手勢信息來獲得操作信息。交互式算盤圖形獲取操作信息和操作坐標可以與常規(guī)交互式圖形獲取操作信息和操作坐標的方法相同。
[0195]需要說明的是,本申請交互式算盤圖形顯示的傳統(tǒng)算盤樣式中,每個檔桿在梁上串2個上珠、留一個空位,在梁下串5個下珠、留一個空位,空位的高度不小于一顆算珠的高度,空位的大小以容納一顆算珠為限。
[0196]在步驟S902中,根據(jù)操作信息和操作坐標改變交互式算盤圖形中區(qū)域塊的值,所述區(qū)域塊與沿檔桿排列的算珠元件和空位對應,大小相同,算珠元件填充于所述區(qū)域塊中;
[0197]在步驟S903中,根據(jù)所有區(qū)域塊的值得到對應的待驗證數(shù)字。
[0198]其中,在建立交互式算盤圖形時,構造區(qū)域塊,所述區(qū)域塊設置于梁與下邊框以及梁與上邊框的范圍內(nèi),沿檔桿排列,且大小相同,圖形中的算珠元件填充于所述區(qū)域塊中。同時在建立交互式算盤圖形時,只有算珠設置為可操作,算盤的梁、邊框和檔桿皆設置為不可操作,當用戶點擊算盤的梁、邊框、檔桿和空白處時,不獲取相應的操作信息和操作坐標。
[0199]其中,在一種可能的實施方式中,所述區(qū)域塊的值為0和1,當算珠元件填充于所述區(qū)域塊時,所述區(qū)域塊的值為1,否則,所述區(qū)域塊的值為0。則獲取用戶對交互式算盤操作信息和在交互式算盤圖形上的操作坐標后,步驟S902中,所述根據(jù)操作信息和操作坐標改變交互式算盤圖形中區(qū)域塊的值,如圖10所示,包括:
[0200]在步驟S1001中,判斷操作信息為點擊操作還是拖動操作;
[0201]其中,可以通過獲取鼠標的動作信息來判斷操作信息為點擊還是拖動,當在觸屏式移動終端上進行操作時,可以通過觸摸信息和手勢信息來判斷操作信息為點擊還是拖動,移動終端操作中帶方向的滑動手勢可看作是點擊。
[0202]當操作信息為點擊操作時,執(zhí)行如下步驟:
[0203]步驟S1021,判斷所述操作坐標是否在區(qū)域塊的坐標范圍內(nèi);
[0204]步驟S1022,當所述操作坐標在區(qū)域塊的坐標范圍內(nèi)時,判斷所述區(qū)域塊內(nèi)是否填充有算珠元件;
[0205]步驟S1023,當所述區(qū)域塊填充有算珠元件時,將算珠元件填充于相鄰的對應于空位的區(qū)域塊中,將所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值取反,否則,保持所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值;
[0206]其中,各個區(qū)域塊的坐標在建立交互式算盤圖形時設置,當操作信息為點擊時,在交互式算盤圖形中點擊的位置的坐標即操作坐標。判斷操作坐標是否在某個區(qū)域塊的坐標范圍內(nèi),當操作坐標在某個區(qū)域塊的范圍內(nèi)時,如果所述區(qū)域塊內(nèi)填充有算珠元件,則操作是對算珠進行的。交互式算盤圖形中只有算珠可操作,當點擊算珠時,將算珠移至相鄰的空位,相當于手動打算盤時將算珠撥至空位,此時,原本填充有算珠元件的區(qū)域變?yōu)榭瘴?,而算珠元件填充至相鄰的空位,因此對原本填充有算珠元件的區(qū)域塊的值和其相鄰的對應于原本的空位的區(qū)域塊的值取反,使原本填充有算珠元件的區(qū)域塊的值由1變?yōu)?,而對應于原本的空位的區(qū)域塊的值由0變?yōu)?。
[0207]其中,當操作坐標不在任何區(qū)域塊的坐標范圍內(nèi),或者,當操作坐標在區(qū)域塊的坐標范圍內(nèi)時,但所述區(qū)域塊內(nèi)沒有填充算珠元件時,保持算珠元件不動,并保持所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值,即當用戶操作的不是算珠時,保持算珠元件不動,也不改變?nèi)魏螀^(qū)域塊的值。
[0208]當操作信息為拖動操作時,執(zhí)行如下步驟:
[0209]步驟S1031,判斷拖動操作的起始操作坐標和終止操作坐標是否分別在兩個相鄰區(qū)域塊的坐標范圍內(nèi);
[0210]步驟S1032,當拖動操作的起始操作坐標和終止操作坐標分別在兩個相鄰區(qū)域塊的坐標范圍內(nèi)時,判斷是否起始操作坐標所在的區(qū)域塊內(nèi)填充有算珠元件,且終止操作坐標所在的區(qū)域塊內(nèi)為空位;
[0211]步驟S1033,當起始操作坐標所在的區(qū)域塊內(nèi)填充有算珠元件,且終止操作坐標所在的區(qū)域塊內(nèi)為空位時,將所述算珠元件填充于終止操作坐標所在的區(qū)域塊中