0
0

はじめに

前回作成した「RustとWebAssembly使ってFaviconGenerator」に引き続き同じ構成で

学習用にRustとWebAssembly使ってFaviconのマルチアイコンChecker的なのを作成しようと思います。

faviconについて

プロジェクトの作成

前回のFaviconGeneratorの続きで書いていく。

今回は、wasmでFaviconのdataを受け取り、icoクレートを使用して

マルチアイコン内の画像数を出力する関数を作成する。

Favicon(.ico)画像を読み取りicoクレートのIconDirに入れる。

IconDir内に含まれるIconの数だけWidthとHeightを表示していくような処理にする。

最後に、出力結果の文字列を返す。

lib.rs
// 省略

#[wasm_bindgen]
pub fn favicon_check(image_data: &[u8]) -> String {
    let icon_dir = ico::IconDir::read(Cursor::new(image_data)).unwrap();
    let mut result = String::new();
    result.push_str("出力結果 \n");

    for entry in icon_dir.entries() {
        result.push_str("Width : ");
        result.push_str(&*entry.width().to_string());
        result.push_str(" x Height : ");
        result.push_str(&*entry.height().to_string());
        result.push_str("\n");
    }
    result
}

// 省略

今回の成果物

デモURL

デモ画像

・元画像(16x16)

RustとWebAssemblyでFaviconマルチアイコンChecker作ってみた_003.jpg

・元画像(16x16,32x32,64x64)

RustとWebAssemblyでFaviconマルチアイコンChecker作ってみた_004.jpg

ソース

まとめ

前回、今回を通じてFaviconを処理してみた。📚

icoクレートなどで処理したが、ライブラリクレートもどんなものがあるのかを知っておくだけで

今後の開発が変わりそうなので注目していきたい。💪

※間違い等ありましたら、ご指摘いただけると助かります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0