fastqr 1.0.20 → 1.0.21

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.
data/README.md CHANGED
@@ -2,88 +2,138 @@
2
2
 
3
3
  [![License](https://img.shields.io/badge/License-LGPL%202.1-blue.svg)](LICENSE)
4
4
  [![C++](https://img.shields.io/badge/C++-14-blue.svg)](https://isocpp.org/)
5
+ [![C](https://img.shields.io/badge/C-11-blue.svg)](https://en.wikipedia.org/wiki/C11_(C_standard_revision))
6
+ [![CMake](https://img.shields.io/badge/CMake-3.10+-064F8C.svg)](https://cmake.org/)
7
+ [![Shell](https://img.shields.io/badge/Shell-Bash-4EAA25.svg)](https://www.gnu.org/software/bash/)
8
+ [![JavaScript](https://img.shields.io/badge/JavaScript-ES6+-F7DF1E.svg)](https://www.ecma-international.org/ecma-262/)
5
9
  [![Ruby](https://img.shields.io/badge/Ruby-Gem-red.svg)](https://rubygems.org/gems/fastqr)
6
10
  [![Node.js](https://img.shields.io/badge/Node.js-npm-green.svg)](https://www.npmjs.com/package/fastqr)
7
11
  [![PHP](https://img.shields.io/badge/PHP-Composer-blue.svg)](https://packagist.org/packages/fastqr/fastqr)
8
12
 
9
- FastQR is a fast, powerful QR code generator with full UTF-8 support, custom colors, logo embedding, and precise size control. **Pre-built binaries included**!
13
+ **The fastest QR code generator on the planet.** 🚀
10
14
 
11
- ## Features
15
+ Generate 1,000 QR codes in **0.37 seconds**. Full UTF-8 support. Custom colors. Logo embedding. Precise size control.
12
16
 
13
- - 🚀 **High Performance**: No process forking
14
- - ⚡ **Batch Mode**: Generate 1000 QR codes in ~0.4s (7x faster than single mode!)
15
- - 🌐 **Full UTF-8 Support**: Vietnamese, Japanese (Kanji, Hiragana, Katakana), Chinese, emoji, etc.
16
- - 🎨 **Custom Colors**: Choose colors for QR code and background
17
- - 📐 **Exact Size**: Generate QR codes with precise pixel dimensions (e.g., 2000x2000px)
18
- - 🖼️ **Logo Embedding**: Add company logos to the center of QR codes
19
- - 📦 **Multiple Languages**: Bindings for Ruby, Node.js, PHP
20
- - 🛡️ **Error Correction**: Supports 4 levels (L, M, Q, H)
21
- - 💾 **Multiple Formats**: PNG, JPG, WebP
22
- - ✅ **Pre-built Binaries**: No dependencies needed for gem/npm/composer packages!
17
+ ---
23
18
 
24
- ## 🎯 Comparison with qrencode
19
+ ## 🔥 Performance Benchmarks
25
20
 
26
- | Feature | FastQR | qrencode |
27
- |---------|--------|----------|
28
- | **Speed** | ✅ The same | ✅ The same |
29
- | **Exact Size** | ✅ 2000x2000px exact | ❌ Scale-based (hard to be exact) |
30
- | **UTF-8 Support** | ✅ Full | ⚠️ Limited |
31
- | **Colors** | ✅ RGB customizable | ❌ Black only |
32
- | **Logo** | ✅ Yes | ❌ No |
33
- | **Bindings** | ✅ Ruby, Node.js, PHP | ❌ CLI only |
34
- | **Installation** | ✅ Pre-built binaries | ❌ Requires system deps |
21
+ ### CLI Performance: FastQR vs qrencode
35
22
 
36
- ## 🏗️ Architecture
23
+ *Task: Generate 1,000 QR codes (500×500px)*
24
+
25
+ | Library | Sequential Mode | Batch Mode | Speedup |
26
+ |---------|----------------|------------|---------|
27
+ | **FastQR** | 2.56s 🚀 | **0.37s** ⚡ | **8x faster** with batch |
28
+ | qrencode | 2.97s 🐌 | ❌ Not supported | - |
29
+
30
+ **FastQR is 16% faster in sequential mode and 8x faster with batch mode!**
31
+
32
+ ---
33
+
34
+ ### Ruby Performance: FastQR vs rqrcode
35
+
36
+ *Task: Generate 1,000 QR codes (500×500px)*
37
+
38
+ | Library | Sequential Mode | Batch Mode | Speedup |
39
+ |---------|----------------|------------|---------|
40
+ | **FastQR** | 3.49s 🚀 | **0.38s** ⚡ | **17x faster** with batch |
41
+ | rqrcode | 59.45s 🐢 | ❌ Not supported | - |
42
+
43
+ **FastQR is 17x faster in sequential mode and 157x faster with batch mode!**
44
+
45
+ ---
46
+
47
+ ### Node.js Performance: FastQR vs qrcode
48
+
49
+ *Task: Generate 1,000 QR codes (500×500px)*
50
+
51
+ | Library | Sequential Mode | Batch Mode | Speedup |
52
+ |---------|----------------|------------|---------|
53
+ | **FastQR** | 2.43s 🚀 | **0.46s** ⚡ | **7x faster** with batch |
54
+ | qrcode | 17.25s 🐌 | ❌ Not supported | - |
55
+
56
+ **FastQR is 7x faster in sequential mode and 37x faster with batch mode!**
57
+
58
+ ---
59
+
60
+ ## 💪 Why FastQR Dominates
61
+
62
+ ### Speed Comparison Summary
63
+
64
+ | Platform | Library | Sequential | Batch | FastQR Advantage |
65
+ |----------|---------|------------|-------|------------------|
66
+ | **CLI** | qrencode | 2.97s | ❌ | **8x faster** ⚡ |
67
+ | **Ruby** | rqrcode | 59.45s | ❌ | **157x faster** 🚀 |
68
+ | **Node.js** | qrcode | 17.25s | ❌ | **37x faster** ⚡ |
69
+
70
+ **Average: FastQR with batch mode is 67x faster than popular alternatives!**
71
+
72
+ ---
73
+
74
+ ## ✨ What Makes FastQR Special?
75
+
76
+ ### Features That Set Us Apart
77
+
78
+ | Feature | FastQR | Others |
79
+ |---------|--------|--------|
80
+ | **Batch Processing** | ✅ Up to 157x faster | ❌ Not available |
81
+ | **Exact Size Control** | ✅ 2000×2000px exact | ❌ Scale-based (imprecise) |
82
+ | **Full UTF-8 Support** | ✅ Vietnamese, Japanese, Chinese, emoji | ⚠️ Limited or none |
83
+ | **Custom Colors** | ✅ RGB foreground + background | ⚠️ Limited or none |
84
+ | **Logo Embedding** | ✅ Built-in logo support | ⚠️ Limited or none |
85
+ | **Language Bindings** | ✅ Ruby, Node.js, PHP, C++ | ✅ Usually supported |
86
+ | **Error Correction** | ✅ 4 levels (L, M, Q, H) | ✅ Usually supported |
87
+
88
+ ---
89
+
90
+ ## 🚀 Key Features
37
91
 
38
- FastQR is built on:
92
+ - **Blazing Fast**: Up to **157x faster** than popular alternatives with batch mode
93
+ - 🔥 **Batch Processing**: Generate 1,000 QR codes in **~0.37 seconds**
94
+ - 🌐 **Full UTF-8 Support**: Vietnamese, Japanese (Kanji, Hiragana, Katakana), Chinese, emoji, and more
95
+ - 🎨 **Custom Colors**: Choose any RGB color for QR code and background
96
+ - 📐 **Exact Size Control**: Generate QR codes with precise pixel dimensions (e.g., 2000×2000px)
97
+ - 🖼️ **Logo Embedding**: Add company logos to the center of QR codes
98
+ - 🛡️ **Error Correction**: Supports 4 levels (L, M, Q, H)
99
+ - 💾 **Multiple Formats**: PNG, JPG, WebP
100
+ - 🔧 **Multiple Languages**: Native bindings for Ruby, Node.js, PHP, and C++
39
101
 
40
- - **[libqrencode](https://fukuchi.org/works/qrencode/)** (LGPL v2.1) - QR code generation
41
- - **[libpng](http://www.libpng.org/pub/png/libpng.html)** - Fast PNG encoding
42
- - **[stb_image](https://github.com/nothings/stb)** (Public Domain) - Logo image loading
102
+ ---
43
103
 
44
104
  ## 📦 Installation
45
105
 
46
- ### macOS (Homebrew)
106
+ ### CLI Installation
47
107
 
108
+ **macOS (Homebrew):**
48
109
  ```bash
49
110
  brew tap tranhuucanh/fastqr
50
111
  brew install fastqr
51
112
  ```
52
113
 
53
- ### Ubuntu/Debian
54
-
114
+ **Ubuntu/Debian:**
55
115
  ```bash
56
- # Download from GitHub Releases
57
116
  wget https://github.com/tranhuucanh/fastqr/releases/download/v1.0.0/fastqr-1.0.0-linux-x64.deb
58
117
  sudo dpkg -i fastqr-1.0.0-linux-x64.deb
59
118
  ```
60
119
 
61
- ### Language Packages (Pre-built Binaries Included!)
120
+ ### Language Packages
62
121
 
63
122
  **Ruby:**
64
123
  ```bash
65
124
  gem install fastqr
66
- # No system dependencies needed! 🎉
67
125
  ```
68
126
 
69
127
  **Node.js:**
70
128
  ```bash
71
- npm install fastqr
72
- # No system dependencies needed! 🎉
129
+ npm install fastqr-pro
73
130
  ```
74
131
 
75
132
  **PHP:**
76
133
  ```bash
77
134
  composer require fastqr/fastqr
78
- # No system dependencies needed! 🎉
79
135
  ```
80
136
 
81
- **Important**: Starting from v1.0.0, all language packages include pre-built binaries for:
82
- - macOS (Intel & Apple Silicon)
83
- - Linux (x86_64 & arm64)
84
-
85
- You don't need to install `libqrencode` or `libpng` separately! The binaries are automatically bundled and loaded.
86
-
87
137
  ### Build from Source
88
138
 
89
139
  ```bash
@@ -103,64 +153,134 @@ make
103
153
  sudo make install
104
154
  ```
105
155
 
106
- See [INSTALL.md](INSTALL.md) for more installation options.
156
+ See [INSTALL.md](INSTALL.md) for more options.
157
+
158
+ ---
107
159
 
108
- ## 🚀 Quick Start
160
+ ## 🎯 Quick Start
109
161
 
110
162
  ### CLI
163
+
164
+ **Single QR Code:**
111
165
  ```bash
112
166
  fastqr "Hello World" output.png
113
167
  fastqr -s 500 -f 255,0,0 "Red QR" red.png
114
- fastqr -F batch.txt output_dir/ # Batch mode - 7x faster!
168
+ fastqr -l logo.png -L 25 "QR with Logo" branded.png
115
169
  ```
116
170
 
117
- ### Ruby
171
+ **Batch Mode (8x faster!):**
118
172
  ```bash
119
- gem install fastqr # Pre-built binaries included!
173
+ # Create batch.txt with one text per line
174
+ echo "https://example.com/user/1" > batch.txt
175
+ echo "https://example.com/user/2" >> batch.txt
176
+ # ... add 1000 URLs
177
+
178
+ # Generate 1,000 QR codes in 0.37 seconds ⚡
179
+ fastqr -F batch.txt output_dir/
120
180
  ```
181
+
182
+ ---
183
+
184
+ ### Ruby
185
+
121
186
  ```ruby
122
187
  require 'fastqr'
123
- FastQR.generate("Hello", "qr.png", size: 500)
124
- FastQR.generate_batch(["QR 1", "QR 2"], "output/") # Batch mode
188
+
189
+ # Single QR code
190
+ FastQR.generate("Hello World", "qr.png", size: 500)
191
+
192
+ # Batch mode - 157x faster than rqrcode! 🚀
193
+ urls = (1..1000).map { |i| "https://example.com/user/#{i}" }
194
+ FastQR.generate_batch(urls, "output/")
195
+ # ⚡ Done in 0.38 seconds! (vs 59.45s with rqrcode)
196
+
197
+ # Custom colors and logo
198
+ FastQR.generate("https://example.com", "branded.png",
199
+ size: 800,
200
+ foreground: [255, 0, 0], # Red QR code
201
+ background: [255, 255, 200], # Light yellow background
202
+ logo: "logo.png",
203
+ logoSize: 20,
204
+ errorLevel: "H" # High error correction for logos
205
+ )
125
206
  ```
126
207
 
208
+ ---
209
+
127
210
  ### Node.js
128
- ```bash
129
- npm install fastqr # Pre-built binaries included!
130
- ```
211
+
131
212
  ```javascript
132
213
  const fastqr = require('fastqr');
133
- fastqr.generate('Hello', 'qr.png', { size: 500 });
134
- fastqr.generateBatch(['QR 1', 'QR 2'], 'output/'); // Batch mode
214
+
215
+ // Single QR code
216
+ fastqr.generate('Hello World', 'qr.png', { size: 500 });
217
+
218
+ // Batch mode - 37x faster than qrcode! 🚀
219
+ const urls = Array.from({length: 1000}, (_, i) =>
220
+ `https://example.com/user/${i+1}`
221
+ );
222
+ fastqr.generateBatch(urls, 'output/');
223
+ // ⚡ Done in 0.46 seconds! (vs 17.25s with qrcode)
224
+
225
+ // Custom colors and logo
226
+ fastqr.generate('https://example.com', 'branded.png', {
227
+ size: 800,
228
+ foreground: [255, 0, 0], // Red QR code
229
+ background: [255, 255, 200], // Light yellow background
230
+ logo: 'logo.png',
231
+ logoSize: 20,
232
+ errorLevel: 'H' // High error correction for logos
233
+ });
135
234
  ```
136
235
 
236
+ ---
237
+
137
238
  ### PHP
138
- ```bash
139
- composer require fastqr/fastqr # Pre-built binaries included!
140
- ```
239
+
141
240
  ```php
142
241
  use FastQR\FastQR;
143
- FastQR::generate('Hello', 'qr.png', ['size' => 500]);
144
- FastQR::generateBatch(['QR 1', 'QR 2'], 'output/'); // Batch mode
242
+
243
+ // Single QR code
244
+ FastQR::generate('Hello World', 'qr.png', ['size' => 500]);
245
+
246
+ // Batch mode - Lightning fast! ⚡
247
+ $urls = array_map(fn($i) => "https://example.com/user/$i", range(1, 1000));
248
+ FastQR::generateBatch($urls, 'output/');
249
+ // Done in ~0.4 seconds!
250
+
251
+ // Custom colors and logo
252
+ FastQR::generate('https://example.com', 'branded.png', [
253
+ 'size' => 800,
254
+ 'foreground' => [255, 0, 0], // Red QR code
255
+ 'background' => [255, 255, 200], // Light yellow background
256
+ 'logo' => 'logo.png',
257
+ 'logoSize' => 20,
258
+ 'errorLevel' => 'H' // High error correction for logos
259
+ ]);
145
260
  ```
146
261
 
262
+ ---
263
+
147
264
  ### C++
265
+
148
266
  ```cpp
149
267
  #include <fastqr.h>
268
+
269
+ // Single QR code
150
270
  fastqr::QROptions options;
151
271
  options.size = 500;
152
- fastqr::generate("Hello", "qr.png", options);
272
+ fastqr::generate("Hello World", "qr.png", options);
273
+
274
+ // Batch mode - Blazing fast! 🚀
275
+ std::vector<std::string> urls;
276
+ for (int i = 1; i <= 1000; i++) {
277
+ urls.push_back("https://example.com/user/" + std::to_string(i));
278
+ }
279
+ fastqr::generateBatch(urls, "output/", options);
280
+ // Done in ~0.4 seconds!
153
281
  ```
154
282
 
155
- ## 📚 Documentation
156
-
157
- Complete usage guides for each platform:
158
-
159
- - **[CLI Usage Guide](docs/CLI_USAGE.md)** - Complete command-line reference with all options and examples
160
- - **[Ruby/Rails Usage Guide](docs/RUBY_USAGE.md)** - Ruby and Rails integration with examples
161
- - **[Node.js Usage Guide](docs/NODEJS_USAGE.md)** - Node.js, Express, and TypeScript guide
162
- - **[PHP Usage Guide](docs/PHP_USAGE.md)** - PHP, Laravel, and WordPress integration
163
- - **[Documentation Index](docs/README.md)** - Full documentation portal
283
+ ---
164
284
 
165
285
  ## 📖 API Reference
166
286
 
@@ -169,10 +289,10 @@ Complete usage guides for each platform:
169
289
  | Option | Type | Default | Description |
170
290
  |--------|------|---------|-------------|
171
291
  | `size` | int | 300 | Output size in pixels (QR codes are square) |
172
- | `optimizeSize` | bool | false | Auto round-up to nearest integer multiple for best performance |
173
- | `foreground` | RGB array | [0,0,0] | QR code color |
174
- | `background` | RGB array | [255,255,255] | Background color |
175
- | `errorLevel` | string | 'M' | Error correction: L (~7%), M (~15%), Q (~25%), H (~30%) |
292
+ | `optimizeSize` | bool | false | Auto round-up to nearest integer multiple |
293
+ | `foreground` | RGB array | [0,0,0] | QR code color (RGB) |
294
+ | `background` | RGB array | [255,255,255] | Background color (RGB) |
295
+ | `errorLevel` | string | 'M' | Error correction: L, M, Q, H |
176
296
  | `logo` | string | "" | Path to logo image |
177
297
  | `logoSize` | int | 20 | Logo size as percentage (1-50) |
178
298
  | `quality` | int | 95 | Image quality for lossy formats (1-100) |
@@ -180,85 +300,63 @@ Complete usage guides for each platform:
180
300
 
181
301
  ### Error Correction Levels
182
302
 
183
- - **L (Low)**: ~7% of codewords can be restored
184
- - **M (Medium)**: ~15% of codewords can be restored
185
- - **Q (Quartile)**: ~25% of codewords can be restored
186
- - **H (High)**: ~30% of codewords can be restored
303
+ | Level | Recovery | Use Case |
304
+ |-------|----------|----------|
305
+ | **L (Low)** | ~7% | Maximum data capacity, clean environment |
306
+ | **M (Medium)** | ~15% | Balanced (default) |
307
+ | **Q (Quartile)** | ~25% | Good for QR codes with logos |
308
+ | **H (High)** | ~30% | Best for damaged/dirty environments |
187
309
 
188
310
  Higher levels allow QR codes to remain readable when damaged or have logos embedded.
189
311
 
190
- ## 🔧 Development
312
+ ---
191
313
 
192
- ### Build from Source
314
+ ## 📚 Documentation
193
315
 
194
- ```bash
195
- git clone https://github.com/tranhuucanh/fastqr.git
196
- cd fastqr
316
+ Complete usage guides for each platform:
197
317
 
198
- # Install dependencies
199
- brew install qrencode libpng cmake
318
+ - **[CLI Usage Guide](docs/CLI_USAGE.md)** - Complete command-line reference
319
+ - **[Ruby/Rails Usage Guide](docs/RUBY_USAGE.md)** - Ruby and Rails integration
320
+ - **[Node.js Usage Guide](docs/NODEJS_USAGE.md)** - Node.js, Express, and TypeScript
321
+ - **[PHP Usage Guide](docs/PHP_USAGE.md)** - PHP, Laravel, and WordPress integration
322
+ - **[Documentation Index](docs/README.md)** - Full documentation portal
200
323
 
201
- # Build
202
- mkdir build && cd build
203
- cmake ..
204
- make
324
+ ---
205
325
 
206
- # Run examples
207
- ./example_basic
326
+ ## 🏗️ Architecture
208
327
 
209
- # Run tests
210
- make test
211
- ```
328
+ FastQR is built on battle-tested, industry-standard libraries:
212
329
 
213
- ### Project Structure
330
+ - **[libqrencode](https://fukuchi.org/works/qrencode/)** (LGPL v2.1) - QR code bit matrix generation
331
+ - **[libpng](http://www.libpng.org/pub/png/libpng.html)** - Lightning-fast PNG encoding
332
+ - **[stb_image](https://github.com/nothings/stb)** (Public Domain) - Efficient image loading
214
333
 
215
- ```
216
- fastqr/
217
- ├── include/ # C++ headers
218
- │ ├── fastqr.h
219
- │ ├── stb_image.h
220
- │ └── stb_image_write.h
221
- ├── src/ # C++ source
222
- │ ├── fastqr.cpp
223
- │ └── cli.cpp
224
- ├── bindings/ # Language bindings
225
- │ ├── ruby/
226
- │ ├── nodejs/
227
- │ └── php/
228
- ├── prebuilt/ # Pre-compiled binaries
229
- │ ├── macos-arm64/
230
- │ ├── macos-x86_64/
231
- │ ├── linux-x86_64/
232
- │ └── linux-arm64/
233
- ├── scripts/ # Build and install scripts
234
- ├── examples/ # Examples
235
- ├── cmake/ # CMake configs
236
- └── LICENSE # LGPL 2.1
237
- ```
334
+ **Why so fast?**
335
+ - ⚡ Zero process forking overhead
336
+ - 🚀 Optimized native C++ core
337
+ - 💪 Batch mode processes multiple QR codes in a single call
338
+ - 🔥 Efficient memory management and image encoding
339
+
340
+ ---
238
341
 
239
342
  ## 📄 License
240
343
 
241
344
  FastQR is licensed under the **GNU Lesser General Public License v2.1 (LGPL-2.1)**.
242
345
 
243
- This project uses:
244
- - **libqrencode** (LGPL v2.1) - Copyright (C) 2006-2017 Kentaro Fukuchi
245
- - **libpng** - PNG image encoding
246
- - **stb_image** (Public Domain) - Sean Barrett's single-header image library
247
-
248
- As required by the LGPL, you can obtain the source code and rebuild this library with modified versions of libqrencode. See [BUILD.md](BUILD.md) for instructions.
249
-
250
346
  ### LGPL Requirements
251
347
 
252
348
  When using FastQR in your projects:
253
349
 
254
- 1. **Open Source Projects**: You can freely use FastQR
255
- 2. **Closed Source/Commercial Projects**: You can use FastQR as a library, but:
256
- - You must include a copy of the LGPL license
257
- - You must state that your software uses FastQR
258
- - Users must be able to replace the FastQR library with a modified version
350
+ 1. **Open Source Projects**: Use freely
351
+ 2. **Closed Source/Commercial Projects**: Use as a library, but:
352
+ - Include a copy of the LGPL license
353
+ - State that your software uses FastQR
354
+ - Users must be able to replace FastQR with a modified version
259
355
 
260
356
  See [LICENSE](LICENSE) for full details.
261
357
 
358
+ ---
359
+
262
360
  ## 🤝 Contributing
263
361
 
264
362
  Contributions are welcome! Please feel free to submit a Pull Request.
@@ -269,44 +367,52 @@ Contributions are welcome! Please feel free to submit a Pull Request.
269
367
  4. Push to the branch (`git push origin feature/AmazingFeature`)
270
368
  5. Open a Pull Request
271
369
 
272
- See [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
370
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
371
+
372
+ ---
273
373
 
274
374
  ## 🐛 Bug Reports
275
375
 
276
- If you find a bug, please open an issue with:
376
+ Found a bug? Please open an issue with:
277
377
  - Your OS and version
278
378
  - FastQR version
279
379
  - Steps to reproduce
280
380
  - Expected vs actual behavior
281
381
 
382
+ ---
383
+
384
+ ## 🗺️ Roadmap
385
+
386
+ - [ ] Windows support
387
+ - [ ] SVG output format
388
+ - [ ] Python bindings
389
+ - [ ] QR code scanning/decoding
390
+ - [ ] Advanced batch processing options
391
+
392
+ ---
393
+
282
394
  ## 📮 Contact
283
395
 
284
- - GitHub: [@tranhuucanh](https://github.com/tranhuucanh)
285
- - Issues: [GitHub Issues](https://github.com/tranhuucanh/fastqr/issues)
396
+ - **GitHub**: [@tranhuucanh](https://github.com/tranhuucanh)
397
+ - **Issues**: [GitHub Issues](https://github.com/tranhuucanh/fastqr/issues)
398
+
399
+ ---
286
400
 
287
401
  ## 🙏 Acknowledgments
288
402
 
403
+ Special thanks to:
289
404
  - [libqrencode](https://fukuchi.org/works/qrencode/) by Kentaro Fukuchi
290
405
  - [libpng](http://www.libpng.org/pub/png/libpng.html) by PNG Development Group
291
406
  - [stb libraries](https://github.com/nothings/stb) by Sean Barrett
292
407
 
293
- ## 📊 Benchmarks
294
-
295
- ```
296
- Generating 100 QR codes (500x500px): ~0.3 seconds
297
- Generating 1000 QR codes (500x500px): ~3 seconds
408
+ ---
298
409
 
299
- Performance tested on modern hardware 🚀
300
- ```
410
+ <div align="center">
301
411
 
302
- ## 🗺️ Roadmap
412
+ **Made with ❤️ by FastQR Project**
303
413
 
304
- - [ ] Windows support
305
- - [ ] SVG output
306
- - [ ] Python bindings
307
- - [ ] Batch processing API
308
- - [ ] QR code scanning/decoding
414
+ *If FastQR saves you time, give us a star!* ⭐
309
415
 
310
- ---
416
+ [⬆ Back to top](#fastqr-)
311
417
 
312
- Made with ❤️ by FastQR Project
418
+ </div>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.20
1
+ 1.0.21