欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過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 的環(huán)境配置,下面這篇文章主要給大家介紹了關于Rust自定義安裝路徑的詳細圖文教程,需要的朋友可以參考下
    2023-03-03
  • Rust中的方法與關聯(lián)函數(shù)使用解讀

    Rust中的方法與關聯(lián)函數(shù)使用解讀

    在Rust中,方法是定義在特定類型(如struct)的impl塊中,第一個參數(shù)是self(可變或不可變),方法用于描述該類型實例的行為,而關聯(lián)函數(shù)則不包含self參數(shù),常用于構造新實例或提供一些與實例無關的功能,Rust的自動引用和解引用特性使得方法調用更加簡潔
    2025-02-02
  • 一文弄懂Rust之切片

    一文弄懂Rust之切片

    在Rust中,切片是一種非常重要的引用類型,它允許你安全地引用一段連續(xù)內存中的數(shù)據(jù),而不需要擁有這些數(shù)據(jù)的所有權,本文主要介紹了Rust之切片,感興趣的可以了解一下
    2024-03-03
  • Rust中的derive屬性示例詳解

    Rust中的derive屬性示例詳解

    derive屬性的出現(xiàn)解決了手動實現(xiàn)一些特性時需要編寫大量重復代碼的問題,它可以讓編譯器自動生成這些特性的基本實現(xiàn),從而減少了程序員需要編寫的代碼量,這篇文章主要介紹了Rust中的derive屬性詳解,需要的朋友可以參考下
    2023-04-04
  • 前端基于Rust實現(xiàn)的Wasm進行圖片壓縮的技術文檔(實現(xiàn)方案)

    前端基于Rust實現(xiàn)的Wasm進行圖片壓縮的技術文檔(實現(xiàn)方案)

    在現(xiàn)代Web開發(fā)中,利用Rust編寫的圖片壓縮代碼可以編譯成WebAssembly(Wasm)模塊,Rust的內存安全特性和Wasm的跨平臺能力,使得這種方案既高效又安全,對Rust?Wasm圖片壓縮實現(xiàn)方案感興趣的朋友一起看看吧
    2024-09-09
  • rust將bitmap位圖文件另存為png格式的方法

    rust將bitmap位圖文件另存為png格式的方法

    通過添加依賴,轉換函數(shù)和單元測試操作步驟來解決將bitmap位圖文件另存為png格式文件,本文通過實例代碼給大家介紹的非常詳細,對rust bitmap位另存為png格式的操作方法感興趣的朋友一起看看吧
    2024-03-03
  • Rust?語言中符號?::?的使用場景解析

    Rust?語言中符號?::?的使用場景解析

    Rust?是一種強調安全性和速度的系統(tǒng)編程語言,這篇文章主要介紹了Rust?語言中符號?::?的使用場景,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • rust 一個日志緩存記錄的通用實現(xiàn)方法

    rust 一個日志緩存記錄的通用實現(xiàn)方法

    本文給出了一個通用的設計模式,通過建造者模式實例化記錄對象,可自定義格式化器將實例化后的記錄對象寫入到指定的緩存對象中,這篇文章主要介紹了rust 一個日志緩存記錄的通用實現(xiàn)方法,需要的朋友可以參考下
    2024-04-04
  • 如何使用Rust寫個猜數(shù)字游戲

    如何使用Rust寫個猜數(shù)字游戲

    這篇文章主要介紹了Rust寫個猜數(shù)字游戲,本項目通過動手實踐,介紹了Rust新概念:let、match、函數(shù)、使用外部 crate 等,接下來的文章,你會繼續(xù)深入學習這些概念,并且介紹大部分編程語言都有的概念,如變量、數(shù)據(jù)類型和函數(shù),以及如何在 Rust 中使用它們,需要的朋友可以參考下
    2023-12-12
  • Rust?所有權機制原理深入剖析

    Rust?所有權機制原理深入剖析

    這篇文章主要為大家介紹了Rust?所有權機制原理深入剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論