From a416df857bdd29a0a74a478585e661659df26888 Mon Sep 17 00:00:00 2001 From: gaoyi Date: Fri, 23 Aug 2024 00:18:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=83=8C=E6=99=AF=E8=89=B2?= =?UTF-8?q?=E7=9A=84=E5=8F=AF=E9=80=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- __test__/group_avatar.png | Bin 57015 -> 0 bytes __test__/index.spec.mjs | 2 +- index.d.ts | 2 +- src/lib.rs | 33 +++++++++++++++++---------------- 5 files changed, 21 insertions(+), 20 deletions(-) delete mode 100644 __test__/group_avatar.png diff --git a/README.md b/README.md index d46f2c7..536b8ce 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ import { generateGroupAvatar } from '../index.js'; size:600, // 头像的大小 margin: 600 / 20, // 头像之间的间距 borderMargin: 600 / 20, // 头像与边框之间的间距 - bgColor: [0, 0, 0, 0], // RGBA + bgColor: [222, 222, 222, 255], // RGBA }) } catch (error) { console.log(error); @@ -43,7 +43,7 @@ export interface Config { margin?: number saveFile?: boolean // 是否保存文件 ,如果你想直接保存文件省去js的保存文件步骤可以将该选项设置为true savePath?: string // 保存文件的路径 - bgFile?: string // 背景图片路径,后续考虑支持传递buffer类型 + bgFile?: string // 背景图片路径,如果有背景图优先使用背景图,后续考虑支持传递buffer类型 bgColor?: Array // 长度3或4的数组,0~255 } ``` diff --git a/__test__/group_avatar.png b/__test__/group_avatar.png deleted file mode 100644 index 72e3815dce6653cd6d40fe7f846ca81740b49d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57015 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 diff --git a/__test__/index.spec.mjs b/__test__/index.spec.mjs index a4e5a91..b580b2b 100644 --- a/__test__/index.spec.mjs +++ b/__test__/index.spec.mjs @@ -23,7 +23,7 @@ test('buffer to buffer', async (t) => { size:600, margin: 600 / 20, borderMargin: 600 / 20, - bgColor: [0, 0, 0, 0], // RGBA + bgColor: [222, 222, 222, 255], // RGBA }) } catch (error) { console.log(error); diff --git a/index.d.ts b/index.d.ts index 2d1c618..3e53994 100644 --- a/index.d.ts +++ b/index.d.ts @@ -11,6 +11,6 @@ export interface Config { saveFile?: boolean savePath?: string bgFile?: string - bgColor: Array + bgColor?: Array } export declare function generateGroupAvatar(cfg: Config): Promise diff --git a/src/lib.rs b/src/lib.rs index 0f55878..b3e4834 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -63,7 +63,7 @@ pub struct Config{ pub save_file: Option, pub save_path: Option, pub bg_file: Option, - pub bg_color: Vec, + pub bg_color: Option>, } impl Config { // 添加一个默认配置的方法 @@ -76,7 +76,7 @@ impl Config { save_file: Some(false), save_path: Some("group_avatar.png".to_string()), bg_file: None, - bg_color: Vec::from([222, 222, 222, 255]) + bg_color: None } } @@ -84,21 +84,22 @@ impl Config { #[napi] async fn generate_group_avatar(cfg: Config) -> Result> { let config = Config::new_default(); - - // 如果 cfg.bg_color 长度不等于3且4 ,就返回js的错误 - - if cfg.bg_color.len() != 3 && cfg.bg_color.len() != 4 { - return Err(Error::new( - Status::GenericFailure, - format!("bg_color must be rgba 3 or 4 length U8int, but got length{}", cfg.bg_color.len()), - )); - } - let bg_color: [ u8; 4 ] = if cfg.bg_color.len() == 3 { - [cfg.bg_color[0], cfg.bg_color[1], cfg.bg_color[2], 255] + let bg_color: [u8; 4] = if let Some(ref colors) = cfg.bg_color { + if colors.len() == 3 { + // 将Vec转换为[u8; 4] + [colors[0], colors[1], colors[2], 255] + } else if colors.len() == 4 { + [colors[0], colors[1], colors[2], colors[3]] + } else { + return Err(Error::new( + Status::GenericFailure, + format!("bg_color must be rgba 3 or 4 length U8int, but got length{}",colors.len()), + )); + } } else { - [cfg.bg_color[0], cfg.bg_color[1], cfg.bg_color[2], cfg.bg_color[3]] + // 如果cfg_bg_color是None,则使用默认值 + [0, 0, 0, 0] }; - // 判断可选配置是否有值,并将值覆盖 let config = Config { images: if cfg.images.is_empty() { config.images } else { cfg.images }, @@ -108,7 +109,7 @@ async fn generate_group_avatar(cfg: Config) -> Result> { save_file: if cfg.save_file.is_some() { cfg.save_file } else { config.save_file }, save_path: if cfg.save_path.is_some() { cfg.save_path } else { config.save_path }, bg_file: config.bg_file, - bg_color: bg_color.to_vec() + bg_color:Some(bg_color.to_vec()) }; napi::tokio::task::spawn(async move {