最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過rust實現(xiàn)自己的web登錄圖片驗證碼功能

 更新時間:2025年03月04日 11:13:28   作者:TPCloud  
本文介紹了如何使用Rust和imagecrate庫生成圖像驗證碼,首先,通過Cargo.toml文件添加image依賴,然后,生成純色圖片并編輯驗證圖片,接著,編寫隨機函數(shù)獲取字符,并通過循環(huán)生成驗證碼圖片,最終,通過運行函數(shù)驗證驗證碼圖片是否生成,感興趣的朋友一起看看吧

    在進行web系統(tǒng)開發(fā)時,為保障系統(tǒng)登錄安全,登錄頁面中的驗證碼必不可少。在java中,我們可以利用相應的2D圖像庫快速生成圖形驗證碼,而對于rust,我們沒有合適的標準庫進行圖像驗證碼的生成。今天,我們通過使用image crate,通過rust生成圖像驗證碼。

一、加入依賴

    我們通過cargo,在我們的項目中引入image依賴。

    我們查看項目中的Cargo.toml文件,可以看到我們加入了image crate依賴。

[package]
name = "app-web1"
version = "0.1.0"
edition = "2021"
[dependencies]
actix-files = "0.6.6"
actix-web = "4.9.0"
captcha = "0.0.9"
image = "0.25.5"
oracle = "0.6.3"
rand = "0.9.0"
serde = "1.0.218"

二、生成純色圖片

    通過代碼生成一個長80,高25的純色圖片。

    let img2 = RgbImage::from_pixel(80, 25, Rgb([226,226,240]));
    img2.save("codeimage.jpg").expect("jpg save failed");

    我們查看生成的圖片信息:

    我們再通過代碼生成四分之一長,高度也為25的純色圖片,用來存儲我們的驗證字母和數(shù)字。

    let img2 = RgbImage::from_pixel(20, 25, Rgb([226,226,240]));
    img2.save("A.jpg").expect("jpg save failed");

三、編輯驗證圖片

    通過翻閱image crate的依賴庫,尚未發(fā)現(xiàn)直接在圖片中寫入文字的方法,故本人通過手工添加26個字符和10個數(shù)字的方式,完成隨機字母和數(shù)字圖片的編輯。

四,隨機函數(shù)編寫

    我們通過編寫一個隨機獲取我們指定字符的函數(shù),為后續(xù)隨機生成驗證圖片提供支持。

fn ge_code_char()-> char{
    let mut rng = rand::rng();
    let s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";
    s.chars().choose(&mut rng).unwrap()
}

五,生成驗證碼圖片

    我們通過循環(huán)獲取驗證字符,并通過拼接字符圖片到我們的驗證碼圖片,最終生成我們需要的驗證碼圖片。

pub fn ge_code_img(){
    //生成一個寬度為70,高為25的顏色為Rgb([226,226,240]的圖像,并保存為文件
    let mut img2 = RgbImage::from_pixel(80, 25, Rgb([226,226,240]));
    for i in 0..4{
        let c = ge_code_char();
        let cp = c.to_string()+".jpg";
        let img3 = ImageReader::open(cp).expect("open A.jpg failed").decode().expect("decode failed");
        img2.copy_from(&(img3.to_rgb8()), i*20, 0).expect("copy from sub img failed!");
    }
    img2.save("codeimage.jpg").expect("jpg save failed");
}

    我們運行函數(shù),驗證隨機驗證碼圖片是否生成:

    第一次:

    第二次:

至此,我們的圖片驗證碼程序完成!

到此這篇關于通過rust實現(xiàn)自己的web登錄圖片驗證碼功能的文章就介紹到這了,更多相關rust web登錄圖片驗證碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Rust?枚舉的使用學習筆記

    Rust?枚舉的使用學習筆記

    Rust中的枚舉是一種用戶定義的類型,本文主要介紹了Rust枚舉的使用,它們不僅僅用于表示幾個固定的值,還可以包含函數(shù)和方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Rust中的panic定義及觸發(fā)條件詳解

    Rust中的panic定義及觸發(fā)條件詳解

    這篇文章主要為大家介紹了Rust中的panic定義及觸發(fā)條件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Rust在Android端集成使用詳解

    Rust在Android端集成使用詳解

    本文介紹了如何在Android平臺上調用Rust編寫的組件,詳細說明了開發(fā)環(huán)境的搭建、Rust庫的創(chuàng)建、配置和編譯過程,以及如何在Android應用中使用Rust編寫的代碼,文中提到飛書底層使用Rust編寫通用組件,展示了Rust在移動端開發(fā)中的應用價值
    2024-11-11
  • rust閉包的使用

    rust閉包的使用

    閉包在Rust中是非常強大的功能,允許你編寫更靈活和表達性的代碼,本文主要介紹了rust閉包的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Rust語言之使用Polar權限管理方法詳解

    Rust語言之使用Polar權限管理方法詳解

    權限管理 (Permission Management) 是一個涵蓋了系統(tǒng)或網(wǎng)絡中用戶權限控制和管理的系統(tǒng),本文將詳細給大家介紹Rust語言中如何使用Polar權限管理,需要的朋友可以參考下
    2023-11-11
  • 使用Cargo工具高效創(chuàng)建Rust項目

    使用Cargo工具高效創(chuàng)建Rust項目

    這篇文章主要介紹了使用Cargo工具高效創(chuàng)建Rust項目,本文有關Cargo工具的使用和Rust輸入輸出知識感興趣的朋友一起看看吧
    2022-08-08
  • Rust字符串類型全解析(最新推薦)

    Rust字符串類型全解析(最新推薦)

    Rust語言中,字符串類型眾多,設計初衷是為了確保程序的安全、高效和靈活性,本文詳細解釋了Rust中不同的字符串類型,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • rust中的match表達式使用詳解

    rust中的match表達式使用詳解

    在rust中提供了一個極為強大的控制流運算符match,這篇文章主要介紹了rust中的match表達式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 為什么要使用 Rust 語言、Rust 語言有什么優(yōu)勢

    為什么要使用 Rust 語言、Rust 語言有什么優(yōu)勢

    雖然 Rust 是一種通用的多范式語言,但它的目標是 C 和 C++占主導地位的系統(tǒng)編程領域,很多朋友會問rust語言難學嗎?rust語言可以做什么,今天帶著這些疑問通過本文詳細介紹下,感興趣的朋友一起看看吧
    2022-10-10
  • Rust 標準庫的結構及模塊路徑詳解

    Rust 標準庫的結構及模塊路徑詳解

    在 Rust 中,標準庫提供了一組核心功能,以幫助開發(fā)者執(zhí)行常見的編程任務,這個路徑樹可以作為參考,幫助你更好地理解 Rust 標準庫的結構和模塊之間的關系,本文介紹 Rust 標準庫的結構,并提供相應的 use 路徑,感興趣的朋友一起看看吧
    2024-05-05

最新評論

怀仁县| 乌鲁木齐市| 太和县| 沭阳县| 浦城县| 江达县| 定州市| 华阴市| 额敏县| 剑川县| 天津市| 宝鸡市| 慈利县| 奉贤区| 革吉县| 松滋市| 吉林省| 永胜县| 横峰县| 科技| 县级市| 安丘市| 平邑县| 安吉县| 岚皋县| 永嘉县| 南木林县| 鹿邑县| 黄陵县| 万安县| 宝兴县| 云和县| 峨眉山市| 海盐县| 县级市| 成安县| 鲁山县| 遵义县| 东乡| 将乐县| 简阳市|