rucaptcha 3.0.0-x86_64-darwin → 3.0.2-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61f111c757bc8be18351fd6c64932cbe8960f2abd555cd374db9a00c2674dbfb
4
- data.tar.gz: cebc898eb54a74b2825d360c27eb5a6ca176dc718832b673e2a7c4615fb4c531
3
+ metadata.gz: 518517dab0fefc07864f9656ed00b272432cb47594c7d8bbca11ad37cee6ed8b
4
+ data.tar.gz: 8b777e3466b8bb2a506c183097b304f3af06aea93ba898d886fc74dbd9d1bd2c
5
5
  SHA512:
6
- metadata.gz: 479bea1c53da1df123308dc72be4df242009f273757741b4c8106119ae17c676fb6265c61c11e04e78327e8b6ee284c90733b0c6f47f13eaea58d87fdc284948
7
- data.tar.gz: 4ea3367009556aef392e0bce3dbbba3462dc08a2112e4e6ef3ec570cd4a017a34dbdf2907bf79e87b9d764d001a6c0250b7603545f388e862c258b90156b2a53
6
+ metadata.gz: 0706046757b260991cbef21ec11b970cab9028d111bc7a035791dff02ecb9bf8a477bdd842911082f1261a5c598de53cedf143e231be203d2771808f7581dfc6
7
+ data.tar.gz: 1a2f18641cae5a540c62afff4d9e68193f723478f9e353de5d8b539399bdcaf42de5b05a7814c009be7a93e8be2bbc83a3e4809830815d69368f58b406ac1aa4
data/README.md CHANGED
@@ -14,7 +14,7 @@ Captcha Gem for Rails, which generates captcha image by Rust.
14
14
 
15
15
  ## Example
16
16
 
17
- ![1](https://user-images.githubusercontent.com/5518/195587367-6b579046-1d75-4a64-8e8f-4475da8932fa.png) ![2](https://user-images.githubusercontent.com/5518/195587377-08065df4-80ad-4c3f-baf4-2da7f9919b19.png) ![3](https://user-images.githubusercontent.com/5518/195587383-de8f73ea-e934-4c9d-b278-c78fb69cad58.png) ![4](https://user-images.githubusercontent.com/5518/195587381-a67e586d-0b54-4d6f-89c8-a431b085e16c.png)
17
+ <img src="https://user-images.githubusercontent.com/5518/196329734-fee49f62-050b-44c8-a5a8-7ffdd3c5a3f6.png" height="50" alt="0"> <img src="https://user-images.githubusercontent.com/5518/196329738-64b264a1-e3fb-4804-ac46-0df18fb31d1e.png" height="50" alt="1"> <img src="https://user-images.githubusercontent.com/5518/196329740-e10ded26-ba46-4e9b-93b8-ce30c198f880.png" height="50" alt="2"> <img src="https://user-images.githubusercontent.com/5518/196329743-c7b055b8-b309-4554-8c95-66c5caf4437d.png" height="50" alt="3"> <img src="https://user-images.githubusercontent.com/5518/196329745-eb68f0c3-ccac-4fa3-aa7a-cc4c2caeb41e.png" height="50" alt="4"> <img src="https://user-images.githubusercontent.com/5518/196329746-b15a9f71-262e-4699-87c7-a5561c6caf2c.png" height="50" alt="5"> <img src="https://user-images.githubusercontent.com/5518/196329747-d111a5d3-89a1-487b-989e-5be8059488c2.png" height="50" alt="6"> <img src="https://user-images.githubusercontent.com/5518/196329749-2cb44aa3-8b59-427c-91f3-59566d6de8a5.png" height="50" alt="7"> <img src="https://user-images.githubusercontent.com/5518/196329754-ae64374b-f2e5-44b8-a7f4-3aee1405c193.png" height="50" alt="8"> <img src="https://user-images.githubusercontent.com/5518/196329755-26b88705-bf34-4d32-a4dc-076530582a90.png" height="50" alt="9">
18
18
 
19
19
  ## Feature
20
20
 
data/Rakefile CHANGED
@@ -29,6 +29,6 @@ task default: :spec
29
29
  task :preview do
30
30
  require "rucaptcha"
31
31
  res = RuCaptchaCore.create(5, 5)
32
- warn res[0]
32
+ warn "-------------------------\n#{res[0]}"
33
33
  puts res[1].pack("c*")
34
34
  end
@@ -0,0 +1,3 @@
1
+ en:
2
+ rucaptcha:
3
+ invalid: "The captcha code is incorrect (if you can't read, you can click image to refresh it)"
@@ -0,0 +1,3 @@
1
+ 'pt-BR':
2
+ rucaptcha:
3
+ invalid: "Código inválido!"
@@ -0,0 +1,3 @@
1
+ 'zh-CN':
2
+ rucaptcha:
3
+ invalid: "验证码不正确(如无法识别,可以点击刷新验证码)"
@@ -0,0 +1,3 @@
1
+ 'zh-TW':
2
+ rucaptcha:
3
+ invalid: "驗證碼不正確(如無法識別,可以點擊刷新驗證碼)"
@@ -1,5 +1,5 @@
1
1
  use image::{ImageBuffer, Rgb};
2
- use imageproc::drawing::{draw_cubic_bezier_curve_mut, draw_hollow_ellipse_mut, draw_text_mut};
2
+ use imageproc::drawing::{draw_cubic_bezier_curve_mut, draw_text_mut};
3
3
  use imageproc::noise::{gaussian_noise_mut, salt_and_pepper_noise_mut};
4
4
  use rand::{thread_rng, Rng};
5
5
  use rusttype::{Font, Scale};
@@ -14,7 +14,12 @@ static BASIC_CHAR: [char; 54] = [
14
14
  static FONT_BYTES1: &[u8; 145008] = include_bytes!("../fonts/FuzzyBubbles-Regular.ttf");
15
15
  static FONT_BYTES2: &[u8; 37792] = include_bytes!("../fonts/Handlee-Regular.ttf");
16
16
 
17
- static COLORS: [(u8, u8, u8); 10] = [
17
+ // https://coolors.co/cc0b8f-7c0abe-5700c8-3c2ea4-3d56a8-3fa67e-45bb30-69d003-a0d003-d8db02
18
+ static COLORS: [(u8, u8, u8); 14] = [
19
+ (197, 166, 3),
20
+ (187, 87, 5),
21
+ (176, 7, 7),
22
+ (186, 9, 56),
18
23
  (204, 11, 143),
19
24
  (124, 10, 190),
20
25
  (87, 0, 200),
@@ -47,7 +52,7 @@ fn get_captcha(len: usize) -> Vec<String> {
47
52
 
48
53
  #[allow(unused)]
49
54
  fn get_color() -> Rgb<u8> {
50
- let rnd = rand_num(COLORS.len());
55
+ let rnd = rand_num(COLORS.len() - 1);
51
56
  let c = COLORS[rnd];
52
57
  Rgb([c.0, c.1, c.2])
53
58
  }
@@ -94,19 +99,28 @@ fn cyclic_write_character(res: &[String], image: &mut ImageBuffer<Rgb<u8>, Vec<u
94
99
  } as f32;
95
100
 
96
101
  let colors = get_colors(res.len());
102
+ let line_colors = get_colors(res.len());
97
103
 
98
104
  let xscale = scale - rand_num((scale * 0.2) as usize) as f32;
99
105
  let yscale = h as f32 - rand_num((h * 0.2) as usize) as f32;
100
106
 
107
+ // Draw line, ellipse first as background
108
+ for (i, _) in res.iter().enumerate() {
109
+ let line_color = line_colors[i];
110
+ draw_interference_line(1, image, line_color);
111
+ draw_interference_ellipse(1, image, line_color);
112
+ }
113
+
114
+ // Draw text
101
115
  for (i, _) in res.iter().enumerate() {
102
116
  let text = &res[i];
103
117
 
104
118
  let color = colors[i];
105
119
  let font = get_font();
106
- let line_color = colors[rand_num(colors.len() - 1)];
107
120
 
108
121
  for j in 0..(rand_num(3) + 1) as i32 {
109
- let offset = j * (rand_num(2) as i32 + 1);
122
+ // Draw text again with offset
123
+ let offset = j * (rand_num(2) as i32);
110
124
  draw_text_mut(
111
125
  image,
112
126
  color,
@@ -120,9 +134,6 @@ fn cyclic_write_character(res: &[String], image: &mut ImageBuffer<Rgb<u8>, Vec<u
120
134
  text,
121
135
  );
122
136
  }
123
-
124
- draw_interference_line(1, image, line_color);
125
- draw_interference_ellipse(1, image, line_color);
126
137
  }
127
138
  }
128
139
 
@@ -139,7 +150,7 @@ fn draw_interference_line(num: usize, image: &mut ImageBuffer<Rgb<u8>, Vec<u8>>,
139
150
  let ctrl_x = get_next((width / 6) as f32, width / 4 * 3);
140
151
  let ctrl_y = get_next(x1, height - 5);
141
152
 
142
- let ctrl_x2 = get_next((width / 4) as f32, width / 4 * 3);
153
+ let ctrl_x2 = get_next((width / 12) as f32, width / 12 * 3);
143
154
  let ctrl_y2 = get_next(x1, height - 5);
144
155
  // Randomly draw bezier curves
145
156
  draw_cubic_bezier_curve_mut(
@@ -159,10 +170,12 @@ fn draw_interference_ellipse(
159
170
  color: Rgb<u8>,
160
171
  ) {
161
172
  for _ in 0..num {
173
+ // max cycle width 20px
162
174
  let w = (10 + rand_num(10)) as i32;
163
175
  let x = rand_num((image.width() - 25) as usize) as i32;
164
176
  let y = rand_num((image.height() - 15) as usize) as i32;
165
- draw_hollow_ellipse_mut(image, (x, y), w, w, color);
177
+
178
+ imageproc::drawing::draw_filled_ellipse_mut(image, (x, y), w, w, color);
166
179
  }
167
180
  }
168
181
 
Binary file
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  module RuCaptcha
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rucaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.2
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Jason Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -47,10 +47,16 @@ files:
47
47
  - README.md
48
48
  - Rakefile
49
49
  - app/controllers/ru_captcha/captcha_controller.rb
50
+ - config/locales/rucaptcha.en.yml
51
+ - config/locales/rucaptcha.pt-BR.yml
52
+ - config/locales/rucaptcha.zh-CN.yml
53
+ - config/locales/rucaptcha.zh-TW.yml
50
54
  - config/routes.rb
51
55
  - ext/rucaptcha/Cargo.lock
52
56
  - ext/rucaptcha/Cargo.toml
53
57
  - ext/rucaptcha/extconf.rb
58
+ - ext/rucaptcha/fonts/FuzzyBubbles-Regular.ttf
59
+ - ext/rucaptcha/fonts/Handlee-Regular.ttf
54
60
  - ext/rucaptcha/src/captcha.rs
55
61
  - ext/rucaptcha/src/lib.rs
56
62
  - lib/rucaptcha.rb