rucaptcha 3.0.1-x86_64-linux → 3.0.2-x86_64-linux

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: 674ff5f607593f7ed105486ed4b481cf490acd0f5b9327ef70ade019c3df4542
4
- data.tar.gz: f1d7baef23b1728bac32938757af7e9017d17e60198e509bf68a7ce37e81c30f
3
+ metadata.gz: b45c990293c73b2c242f804603d4f31ed4508cc564fcddb7303011bbb5866f67
4
+ data.tar.gz: 78198ebdb722609dcb4cf1dfea16d73c61c5466d66099c54c9d448b5c8fa165b
5
5
  SHA512:
6
- metadata.gz: 242a7cea9682b70027039a7d71f897abe84dec997148b8d1018e982e11619458aacadc208c3fc085695510aa2ea0f48979922c997cff94c7cf30f98bfbade1ee
7
- data.tar.gz: 7d51f9e9174cdbc4b8875a7762ca65b7f978d9ec01548e7fbb48a6f92879063cfe01389b6a699071fe26395606d9a483fdcd279cad552739b7afa2dd78647a1e
6
+ metadata.gz: 86808a95cf309abb12276cbf2707461c77d329367918625390bea2735b34ac318812efbdc4485b9ae61eb9f37a9146e767f740ac408ca46fd56d753718b1f3e0
7
+ data.tar.gz: 9cdd1f4326c8c4945ec8b46bfadfa19c7c455379e111509f1cb944ef1aca44299ddda310aa2eb4a53eb697fefba87fb899eb6e41b6e33235316e419e979fe274
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
@@ -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.1"
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.1
4
+ version: 3.0.2
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Jason Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-14 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