はじめに
前回作成した「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)
・元画像(16x16,32x32,64x64)
ソース
まとめ
前回、今回を通じてFaviconを処理してみた。📚
icoクレートなどで処理したが、ライブラリクレートもどんなものがあるのかを知っておくだけで
今後の開発が変わりそうなので注目していきたい。💪
※間違い等ありましたら、ご指摘いただけると助かります。