rucaptcha 3.0.1-x86_64-darwin → 3.0.2-x86_64-darwin

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd8458be9bd1e3ff1f7ca6c91f3c5def1aa34a6c842a466f7c91e112d74f77db
4
- data.tar.gz: e182f1299ecb872dd626abd66321e652a81f65b6edfe00f9794df7ad749a7b61
3
+ metadata.gz: 518517dab0fefc07864f9656ed00b272432cb47594c7d8bbca11ad37cee6ed8b
4
+ data.tar.gz: 8b777e3466b8bb2a506c183097b304f3af06aea93ba898d886fc74dbd9d1bd2c
5
5
  SHA512:
6
- metadata.gz: 64d540ac9ee34d0063da9366a2b14538439086a1bcb32a579838fa85921a367dbb622e207d6b37eb3e45c756b7ab22530d26955e7f06a8fc1e3926ca32efb37f
7
- data.tar.gz: f14a97a632ad5b89f6c5fb65cbf0f7dd7369f7bd97bf698a5e590f4381e65abe62331ff9a36bfdb9cf8f355cfd145a4f6c40eeba8bcf5bb4c37d27848e9491ca
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
@@ -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-darwin
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