cryptopunks 2.0.1 → 3.0.1

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
@@ -1,526 +1,666 @@
1
- # Crypto Punks
2
-
3
- cryptopunks - mint your own 24×24 pixel punk images off chain from the True Official Genuine CryptoPunks™ sha256-verified original 10 000 unique character collection; incl. 2x/4x/8x zoom for bigger sizes
4
-
5
- * home :: [github.com/cryptopunksnotdead/cryptopunks](https://github.com/cryptopunksnotdead/cryptopunks)
6
- * bugs :: [github.com/cryptopunksnotdead/cryptopunks/issues](https://github.com/cryptopunksnotdead/cryptopunks/issues)
7
- * gem :: [rubygems.org/gems/cryptopunks](https://rubygems.org/gems/cryptopunks)
8
- * rdoc :: [rubydoc.info/gems/cryptopunks](http://rubydoc.info/gems/cryptopunks)
9
-
10
-
11
- New to Crypto Punks?
12
- See the [**Awesome CryptoPunks Bubble (Anno 2021) - Modern 24×24 Pixel Crypto Art on the Blockchain** »](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble)
13
-
14
-
15
-
16
- ## Command Line
17
-
18
- Use the `punk` (or `cryptopunk`) command line tool. Try:
19
-
20
- ```
21
- $ punk -h
22
- ```
23
-
24
- resulting in:
25
-
26
- ```
27
- NAME
28
- punk - punk (or cryptopunk) command line tool
29
-
30
- SYNOPSIS
31
- punk [global options] command [command options] [arguments...]
32
-
33
- VERSION
34
- 2.0.0
35
-
36
- GLOBAL OPTIONS
37
- -d, --dir,
38
- -o, --out, --outdir=DIR - Output directory (default: .)
39
- -f, --file=FILE - True Official Genuine CryptoPunks™ all-in-one
40
- composite image (default: ./punks.png)
41
- --offset=NUM - Start counting at offset (default: 0)
42
- -z, --zoom=ZOOM - Zoom factor x2, x4, x8, etc. (default: 1)
43
-
44
- --help - Show this message
45
- --version - Display the program version
46
- --verbose - (Debug) Show debug messages
47
-
48
-
49
- COMMANDS
50
- g, gen, generate - Generate punk characters from text attributes (from
51
- scratch / zero) via builtin punk spritesheet
52
- l, ls, list - List all punk archetype and attribute names from builtin
53
- punk spritesheet
54
- q, query - Query (builtin off-chain) punk contract for punk text
55
- attributes by IDs - use 0 to 9999
56
- t, tile - Get punk characters via image tiles from all-in-one punk
57
- series composite (./punks.png) - for IDs use 0 to 9999
58
-
59
- help - Shows a list of commands or help for one command
60
- ```
61
-
62
- ### Generate Command
63
-
64
- _Generate punk characters from text attributes (from scratch / zero) via builtin punk spritesheet_
65
-
66
-
67
- Let's try punk #0:
68
-
69
- ```
70
- $ punk generate female_2 earring blonde_bob green_eye_shadow
71
- ```
72
-
73
- resulting in:
74
-
75
- ![](i/punk-0000.png)
76
-
77
- Let's try the `-z/--zoom` factor 2x, 4x, 8x, etc.:
78
-
79
- ```
80
- $ punk --zoom 4 generate female_2 earring blonde_bob green_eye_shadow
81
- # -or-
82
- $ punk -z2 g female_2 earring blonde_bob green_eye_shadow
83
- ```
84
-
85
- resulting in:
86
-
87
- 2x ![](i/punk-0000x2.png)
88
- 4x ![](i/punk-0000x4.png)
89
- 8x ![](i/punk-0000x8.png)
90
-
91
-
92
- Let's try never-before-seen super-rare punks:
93
-
94
- ```
95
- $ punk generate demon heart_shades
96
- $ punk generate vampire_female wild_hair
97
- ```
98
-
99
- resulting in:
100
-
101
- ![](i/demon.png)
102
- ![](i/vampire-female.png)
103
-
104
-
105
-
106
- Q: What punk archetypes and attributes can I use?
107
-
108
- A: See the list command.
109
-
110
-
111
- ### List Command
112
-
113
- _List all punk archetype and attribute names from builtin punk spritesheet_
114
-
115
-
116
- Let's try:
117
-
118
- ```
119
- $ punk list
120
- # -or-
121
- $ punk ls
122
- ```
123
-
124
- resulting in:
125
-
126
- ```
127
- ==> Archetypes
128
- Male 1 / (m) - Archetype - Human
129
- Male 2 / (m) - Archetype - Human
130
- Male 3 / (m) - Archetype - Human
131
- Male 4 / (m) - Archetype - Human
132
- Female 1 / (f) - Archetype - Human
133
- Female 2 / (f) - Archetype - Human
134
- Female 3 / (f) - Archetype - Human
135
- Female 4 / (f) - Archetype - Human
136
- Zombie / (m) - Archetype - Zombie
137
- Zombie Female / (f) - Archetype - Zombie
138
- Ape / (m) - Archetype - Ape
139
- Ape Female / (f) - Archetype - Ape
140
- Alien / (m) - Archetype - Alien
141
- Alien Female / (f) - Archetype - Alien
142
- Demon / (m) - Archetype - Demon
143
- Demon Female / (f) - Archetype - Demon
144
- Mummy / (m) - Archetype - Mummy
145
- Mummy Female / (f) - Archetype - Mummy
146
- Orc / (m) - Archetype - Orc
147
- Orc Female / (f) - Archetype - Orc
148
- Robot / (m) - Archetype - Robot
149
- Robot Female / (f) - Archetype - Robot
150
- Skeleton / (m) - Archetype - Skeleton
151
- Skeleton Female / (f) - Archetype - Skeleton
152
- Vampire / (m) - Archetype - Vampire
153
- Vampire Female / (f) - Archetype - Vampire
154
- Zombie (Ape) / (m) - Archetype - Zombie
155
- Alien (Ape) / (m) - Archetype - Alien
156
- Alien 0° / (m) - Archetype - Alien
157
- Alien 30° / (m) - Archetype - Alien
158
- Alien 60° / (m) - Archetype - Alien
159
- Alien 90° / (m) - Archetype - Alien
160
- Alien 120° / (m) - Archetype - Alien
161
- Alien 150° / (m) - Archetype - Alien
162
- Alien 180° / (m) - Archetype - Alien
163
- Alien 210° / (m) - Archetype - Alien
164
- Alien 240° / (m) - Archetype - Alien
165
- Alien 270° / (m) - Archetype - Alien
166
- Alien 300° / (m) - Archetype - Alien
167
- Alien 330° / (m) - Archetype - Alien
168
- Alien (Ape) / (m) - Archetype - Alien
169
- Alien (Ape) 30° / (m) - Archetype - Alien
170
- Alien (Ape) 60° / (m) - Archetype - Alien
171
- Alien (Ape) 90° / (m) - Archetype - Alien
172
- Alien (Ape) 120° / (m) - Archetype - Alien
173
- Alien (Ape) 150° / (m) - Archetype - Alien
174
- Alien (Ape) 180° / (m) - Archetype - Alien
175
- Alien (Ape) 210° / (m) - Archetype - Alien
176
- Alien (Ape) 240° / (m) - Archetype - Alien
177
- Alien (Ape) 270° / (m) - Archetype - Alien
178
- Alien (Ape) 300° / (m) - Archetype - Alien
179
- Alien (Ape) 330° / (m) - Archetype - Alien
180
- Alien Female 0° / (f) - Archetype - Alien
181
- Alien Female 30° / (f) - Archetype - Alien
182
- Alien Female 60° / (f) - Archetype - Alien
183
- Alien Female 90° / (f) - Archetype - Alien
184
- Alien Female 120° / (f) - Archetype - Alien
185
- Alien Female 150° / (f) - Archetype - Alien
186
- Alien Female 180° / (f) - Archetype - Alien
187
- Alien Female 210° / (f) - Archetype - Alien
188
- Alien Female 240° / (f) - Archetype - Alien
189
- Alien Female 270° / (f) - Archetype - Alien
190
- Alien Female 300° / (f) - Archetype - Alien
191
- Alien Female 330° / (f) - Archetype - Alien
192
-
193
- ==> Attributes
194
- 3D Glasses / (m) - Attribute
195
- 3D Glasses / (f) - Attribute
196
- Bandana / (m) - Attribute
197
- Bandana / (f) - Attribute
198
- Beanie / (m) - Attribute
199
- Beanie / (f) - Attribute
200
- Big Beard / (m) - Attribute
201
- Big Shades / (m) - Attribute
202
- Big Shades / (f) - Attribute
203
- Black Lipstick / (f) - Attribute
204
- Blonde Bob / (f) - Attribute
205
- Blonde Short / (f) - Attribute
206
- Blue Eye Shadow / (f) - Attribute
207
- Buck Teeth / (m) - Attribute
208
- Cap / (m) - Attribute
209
- Cap / (f) - Attribute
210
- Cap Forward / (m) - Attribute
211
- Cap Forward / (f) - Attribute
212
- Chinstrap / (m) - Attribute
213
- Choker / (f) - Attribute
214
- Cigarette / (m) - Attribute
215
- Cigarette / (f) - Attribute
216
- Classic Shades / (m) - Attribute
217
- Classic Shades / (f) - Attribute
218
- Clown Eyes Blue / (m) - Attribute
219
- Clown Eyes Blue / (f) - Attribute
220
- Clown Eyes Green / (m) - Attribute
221
- Clown Eyes Green / (f) - Attribute
222
- Clown Hair Green / (m) - Attribute
223
- Clown Hair Green / (f) - Attribute
224
- Clown Nose / (m) - Attribute
225
- Clown Nose / (f) - Attribute
226
- Cowboy Hat / (m) - Attribute
227
- Cowboy Hat / (f) - Attribute
228
- Crazy Hair / (m) - Attribute
229
- Crazy Hair / (f) - Attribute
230
- Dark Hair / (f) - Attribute
231
- Do-rag / (m) - Attribute
232
- Do-rag / (f) - Attribute
233
- Earring / (m) - Attribute
234
- Earring / (f) - Attribute
235
- Eye Mask / (m) - Attribute
236
- Eye Mask / (f) - Attribute
237
- Eye Patch / (m) - Attribute
238
- Eye Patch / (f) - Attribute
239
- Fedora / (m) - Attribute
240
- Fedora / (f) - Attribute
241
- Front Beard / (m) - Attribute
242
- Front Beard Dark / (m) - Attribute
243
- Frown / (m) - Attribute
244
- Frumpy Hair / (m) - Attribute
245
- Frumpy Hair / (f) - Attribute
246
- Green Eye Shadow / (f) - Attribute
247
- Goat / (m) - Attribute
248
- Gold Chain / (m) - Attribute
249
- Gold Chain / (f) - Attribute
250
- ...
251
- ```
252
-
253
- See the [**punks.spritesheet**](https://github.com/cryptopunksnotdead/punks.spritesheet) for more.
254
-
255
-
256
-
257
-
258
- ### Query Command
259
-
260
- _Query (builtin off-chain) punk contract for punk text attributes by IDs - use 0 to 9999_
261
-
262
-
263
- Let's try punk #0:
264
-
265
- ```
266
- $ punk query 0
267
- # -or-
268
- $ punk q 0
269
- ```
270
-
271
- resulting in:
272
-
273
- ```
274
- ==> (1/1) punk #0...
275
- female_2 earring blonde_bob green_eye_shadow
276
- ```
277
-
278
- Let's try some top sellers:
279
-
280
- ```
281
- $ punk query 7804 3100 5217 8857
282
- # -or-
283
- $ punk q 7804 3100 5217 8857
284
- ```
285
-
286
- resulting in:
287
-
288
- ```
289
- ==> (1/4) punk #7804...
290
- alien cap_forward pipe small_shades
291
- ==> (2/4) punk #3100...
292
- alien headband
293
- ==> (3/4) punk #5217...
294
- ape gold_chain knitted_cap
295
- ==> (4/4) punk #8857...
296
- zombie wild_hair 3d_glasses
297
- ```
298
-
299
- Note: Yes, you can pass the text attributes to the generate command
300
- to get a free "cleanroom" copy built from scratch / zero
301
- that you own 100% forever.
302
-
303
-
304
-
305
- ### Tile Command
306
-
307
- _Get punk characters via image tiles from all-in-one punk series composite (`./punks.png`) - for IDs use 0 to 9999_
308
-
309
-
310
-
311
- Step 0 - Download the True Official Genuine CryptoPunks™ composite image
312
-
313
- One time / first time only - Download the True Official Genuine CryptoPunks™ composite
314
- housing all 10 000 CryptoPunks
315
- in a single 2400×2400 image (~830 kb) for free.
316
- See [`punks.png` »](https://github.com/larvalabs/cryptopunks/blob/master/punks.png)
317
-
318
-
319
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punks-zoom.png)
320
-
321
-
322
-
323
-
324
- Now let's give it a try. Let's save punk #0, #2890, and #8219:
325
-
326
- ```
327
- $ punk tile 0 2890 8219
328
- ```
329
-
330
- printing:
331
-
332
- ```
333
- ==> reading >./punks.png<...
334
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
335
- True Official Genuine CryptoPunks™ verified
336
- ==> (1/3) saving punk #0 to >./punk-0000.png<...
337
- ==> (2/3) saving punk #2890 to >./punk-2890.png<...
338
- ==> (3/3) saving punk #8219 to >./punk-8219.png<...
339
- ```
340
-
341
- And voila!
342
-
343
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
344
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png)
345
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png)
346
-
347
-
348
-
349
- **Bonus: Try the `-z/--zoom` factor 2x, 4x, 8x, etc.**
350
-
351
- Let's give it a try. Let's save punk #0, #2890, and #8219 in 2x format:
352
-
353
- ```
354
- $ punk --zoom 2 tile 0 2890 8219
355
- # -or-
356
- $ punk -z2 t 0 2890 8219
357
- ```
358
-
359
- printing:
360
-
361
- ```
362
- ==> reading >./punks.png<...
363
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
364
- True Official Genuine CryptoPunks™ verified
365
- setting zoom to 2x
366
- ==> (1/3) saving punk #0 to >punk-0000@2x.png<...
367
- ==> (2/3) saving punk #2890 to >punk-2890@2x.png<...
368
- ==> (3/3) saving punk #8219 to >punk-8219@2x.png<...
369
- ```
370
-
371
- And voila!
372
-
373
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
374
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x2.png)
375
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x2.png)
376
-
377
- And x4:
378
-
379
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
380
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x4.png)
381
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x4.png)
382
-
383
-
384
- And x8:
385
-
386
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
387
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x8.png)
388
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x8.png)
389
-
390
-
391
- And so on.
392
-
393
-
394
-
395
-
396
- **10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections**
397
-
398
-
399
- Use the `-f, --file=FILE` option
400
- to pass along any unauthorized edition.
401
- Only make sure all punks are lined-up left-to-right, top-to-bottom
402
- in the 24x24 pixel format in the composite image.
403
-
404
-
405
- Let's try the 10 000 More Punks series housing punks in
406
- packs of a hundred each. Let's have a looksie at the first 100
407
- in the series.
408
-
409
-
410
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-1.png)
411
-
412
-
413
-
414
- Let's save punk #0, #19, #50, and #89
415
- and let's add an offset of 10000
416
- (to start counting at 10000 instead of 0):
417
-
418
- ```
419
- $ punk --file ./more-punks-1.png --offset 10000 tile 0 18 40 88
420
- ```
421
-
422
- printing:
423
-
424
- ```
425
- ==> reading >./more-punks-1.png<...
426
- 240x240 (height x width)
427
- ==> (1/4) saving punk #10000 to >./punk-10000.png<...
428
- ==> (2/4) saving punk #10018 to >./punk-10018.png<...
429
- ==> (3/4) saving punk #10040 to >./punk-10040.png<...
430
- ==> (4/4) saving punk #10040 to >./punk-10088.png<...
431
- ```
432
-
433
- And voila!
434
-
435
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000.png)
436
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018.png)
437
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040.png)
438
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088.png)
439
-
440
-
441
- And 4x:
442
-
443
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000x4.png)
444
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018x4.png)
445
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040x4.png)
446
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088x4.png)
447
-
448
-
449
-
450
-
451
- Let's try the second pack - that is, punks 100 to 199 in the series.
452
-
453
-
454
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-2.png)
455
-
456
-
457
-
458
- Let's save punk #0, #79, #80, and #90
459
- and let's add an offset of 10100
460
- (to start counting at 10000 plus 100 instead of 0):
461
-
462
- ```
463
- $ punk --file ./more-punks-2.png --offset 10100 tile 0 79 80 90
464
- ```
465
-
466
- printing:
467
-
468
- ```
469
- ==> reading >./more-punks-2.png<...
470
- 240x240 (height x width)
471
- ==> (1/4) saving punk #10100 to >./punk-10100.png<...
472
- ==> (2/4) saving punk #10179 to >./punk-10179.png<...
473
- ==> (3/4) saving punk #10180 to >./punk-10180.png<...
474
- ==> (4/4) saving punk #10190 to >./punk-10190.png<...
475
- ```
476
-
477
- And voila! Super rare - world's first female alien and much more.
478
-
479
-
480
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100.png)
481
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179.png)
482
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180.png)
483
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190.png)
484
-
485
-
486
- And 4x:
487
-
488
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100x4.png)
489
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179x4.png)
490
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180x4.png)
491
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190x4.png)
492
-
493
-
494
- And so on.
495
-
496
-
497
-
498
-
499
-
500
-
501
- ## Usage in Your Scripts
502
-
503
-
504
- Yes, you can generate punks in your own scripts
505
- and much more.
506
- See the
507
- [**Programming CryptoPunks & Copypastas Step-by-Step Booklet / Guide »**](https://github.com/cryptopunksnotdead/programming-cryptopunks)
508
-
509
-
510
-
511
- ## Install
512
-
513
- Just install the gem:
514
-
515
- $ gem install cryptopunks
516
-
517
-
518
- ## License
519
-
520
- The scripts are dedicated to the public domain.
521
- Use it as you please with no restrictions whatsoever.
522
-
523
-
524
- ## Questions? Comments?
525
-
526
- Post them on the [CryptoPunksDev reddit](https://old.reddit.com/r/CryptoPunksDev). Thanks.
1
+ > Someday, owning a Matt & John's® Punk might signify just how early of an
2
+ > adopter you were into the world of blockchain and its thriving digital
3
+ > art scene. Or, they could just be a bunch of [24×24 pixel] images.
4
+ >
5
+ > -- [June 2017](https://mashable.com/2017/06/16/cryptopunks-ethereum-art-collectibles/)
6
+ >
7
+ >
8
+ > There will be a desire and need to buy expensive [status symbols]
9
+ > in the digital realm [to "flex" how rich and stupid I am].
10
+ > What could be more desirable than a small [24×24]
11
+ > pixelated [knitted cap-wearing ape] face?
12
+ > Matt & John's® Punk artwork [![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png) [#8219](https://www.larvalabs.com/cryptopunks/details/8219)] just sold for $176,000.
13
+ >
14
+ > -- [January 2021](https://decrypt.co/53519/an-ethereum-based-cryptopunk-artwork-just-sold-for-176000)
15
+ >
16
+ >
17
+ > Ultra-rare alien [24×24 pixel] Matt & John's® Punk
18
+ > sells for 605 ETH, or $750,000.
19
+ > The investment thesis. "Aliens are the rarest form of Matt & John's® Punk and
20
+ > we believe that the acquired Alien [![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png) [#2890](https://www.larvalabs.com/cryptopunks/details/2890), one of nine]
21
+ > will be prized by collectors over
22
+ > time and mature into an iconic digital art piece."
23
+ >
24
+ > -- [January 2021](https://cointelegraph.com/news/ultra-rare-alien-cryptopunk-nft-sells-for-605-eth-or-750-000)
25
+ >
26
+ >
27
+ > The Matt & John's® [CryptoPunksMarket] contract now holds 4,095 ETH (~$5.4M USD) in open bids and pending withdrawals.
28
+ >
29
+ > -- [January 2021](https://twitter.com/larvalabs/status/1353915659453870080)
30
+
31
+
32
+
33
+
34
+ # Crypto Punks
35
+
36
+ cryptopunks - generate your own 24×24 pixel punk images (off-chain) from the True Official Matt & John's® Punks sha256-verified original 10 000 unique character collection; incl. 2x/4x/8x zoom for bigger sizes
37
+
38
+ * home :: [github.com/cryptopunksnotdead/cryptopunks](https://github.com/cryptopunksnotdead/cryptopunks)
39
+ * bugs :: [github.com/cryptopunksnotdead/cryptopunks/issues](https://github.com/cryptopunksnotdead/cryptopunks/issues)
40
+ * gem :: [rubygems.org/gems/cryptopunks](https://rubygems.org/gems/cryptopunks)
41
+ * rdoc :: [rubydoc.info/gems/cryptopunks](http://rubydoc.info/gems/cryptopunks)
42
+
43
+
44
+ New to Crypto Punks?
45
+ See the [**Awesome CryptoPunks Bubble (Anno 2021) - Modern 24×24 Pixel Crypto Art on the Blockchain** »](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble)
46
+
47
+
48
+
49
+ ## Command Line
50
+
51
+ Use the `punk` (or `cryptopunk`) command line tool. Try:
52
+
53
+ ```
54
+ $ punk -h
55
+ ```
56
+
57
+ resulting in:
58
+
59
+ ```
60
+ NAME
61
+ punk - punk (or cryptopunk) command line tool
62
+
63
+ SYNOPSIS
64
+ punk [global options] command [command options] [arguments...]
65
+
66
+ VERSION
67
+ 3.0.0
68
+
69
+ GLOBAL OPTIONS
70
+ -d, --dir,
71
+ -o, --out, --outdir=DIR - Output directory (default: .)
72
+ -f, --file=FILE - All-in-one
73
+ composite image (default: ./punks.png)
74
+ --offset=NUM - Start counting at offset (default: 0)
75
+ --seed=NUM - Seed for random number generation /
76
+ shuffle (default: 4142)
77
+ -z, --zoom=ZOOM - Zoom factor x2, x4, x8, etc. (default: 1)
78
+
79
+ --help - Show this message
80
+ --version - Display the program version
81
+ --verbose - (Debug) Show debug messages
82
+
83
+
84
+ COMMANDS
85
+ g, gen, generate - Generate punk characters from text attributes (from
86
+ scratch / zero) via builtin punk spritesheet
87
+ l, ls, list - List all punk archetype and attribute names from builtin
88
+ punk spritesheet
89
+ q, query - Query (builtin off-chain) punk contract for punk text
90
+ attributes by IDs - use 0 to 9999
91
+ t, tile - Get punk characters via image tiles from all-in-one punk
92
+ series composite (./punks.png) - for IDs use 0 to 9999
93
+ f, flip - Flip (vertically) all punk characters in all-in-one punk
94
+ series composite (./punks.png)
95
+ s, shuffle - Shuffle all punk characters (randomly) in all-in-one
96
+ punk series composite (./punks.png)
97
+
98
+ help - Shows a list of commands or help for one command
99
+ ```
100
+
101
+
102
+ ### Generate Command
103
+
104
+ _Generate punk characters from text attributes (from scratch / zero) via builtin punk spritesheet_
105
+
106
+
107
+ Let's try punk #0:
108
+
109
+ ```
110
+ $ punk generate female_2 earring blonde_bob green_eye_shadow
111
+ ```
112
+
113
+ resulting in:
114
+
115
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
116
+
117
+ Let's try the `-z/--zoom` factor 2x, 4x, 8x, etc.:
118
+
119
+ ```
120
+ $ punk --zoom 4 generate female_2 earring blonde_bob green_eye_shadow
121
+ # -or-
122
+ $ punk -z2 g female_2 earring blonde_bob green_eye_shadow
123
+ ```
124
+
125
+ resulting in:
126
+
127
+ 2x ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
128
+ 4x ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
129
+ 8x ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
130
+
131
+
132
+ Let's try never-before-seen super-rare punks:
133
+
134
+ ```
135
+ $ punk generate demon heart_shades
136
+ $ punk generate vampire_female wild_hair
137
+ ```
138
+
139
+ resulting in:
140
+
141
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/demon.png)
142
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/vampire-female.png)
143
+
144
+
145
+
146
+ Q: What punk archetypes and attributes can I use?
147
+
148
+ A: See the list command.
149
+
150
+
151
+ ### List Command
152
+
153
+ _List all punk archetype and attribute names from builtin punk spritesheet_
154
+
155
+
156
+ Let's try:
157
+
158
+ ```
159
+ $ punk list
160
+ # -or-
161
+ $ punk ls
162
+ ```
163
+
164
+ resulting in:
165
+
166
+ ```
167
+ ==> Archetypes
168
+ Male 1 / (m) - Archetype - Human
169
+ Male 2 / (m) - Archetype - Human
170
+ Male 3 / (m) - Archetype - Human
171
+ Male 4 / (m) - Archetype - Human
172
+ Female 1 / (f) - Archetype - Human
173
+ Female 2 / (f) - Archetype - Human
174
+ Female 3 / (f) - Archetype - Human
175
+ Female 4 / (f) - Archetype - Human
176
+ Zombie / (m) - Archetype - Zombie
177
+ Zombie Female / (f) - Archetype - Zombie
178
+ Ape / (m) - Archetype - Ape
179
+ Ape Female / (f) - Archetype - Ape
180
+ Alien / (m) - Archetype - Alien
181
+ Alien Female / (f) - Archetype - Alien
182
+ Demon / (m) - Archetype - Demon
183
+ Demon Female / (f) - Archetype - Demon
184
+ Mummy / (m) - Archetype - Mummy
185
+ Mummy Female / (f) - Archetype - Mummy
186
+ Orc / (m) - Archetype - Orc
187
+ Orc Female / (f) - Archetype - Orc
188
+ Robot / (m) - Archetype - Robot
189
+ Robot Female / (f) - Archetype - Robot
190
+ Skeleton / (m) - Archetype - Skeleton
191
+ Skeleton Female / (f) - Archetype - Skeleton
192
+ Vampire / (m) - Archetype - Vampire
193
+ Vampire Female / (f) - Archetype - Vampire
194
+ Zombie (Ape) / (m) - Archetype - Zombie
195
+ Alien (Ape) / (m) - Archetype - Alien
196
+ Alien / (m) - Archetype - Alien
197
+ Alien 30° / (m) - Archetype - Alien
198
+ Alien 60° / (m) - Archetype - Alien
199
+ Alien 90° / (m) - Archetype - Alien
200
+ Alien 120° / (m) - Archetype - Alien
201
+ Alien 150° / (m) - Archetype - Alien
202
+ Alien 180° / (m) - Archetype - Alien
203
+ Alien 210° / (m) - Archetype - Alien
204
+ Alien 240° / (m) - Archetype - Alien
205
+ Alien 270° / (m) - Archetype - Alien
206
+ Alien 300° / (m) - Archetype - Alien
207
+ Alien 330° / (m) - Archetype - Alien
208
+ Alien (Ape) 0° / (m) - Archetype - Alien
209
+ Alien (Ape) 30° / (m) - Archetype - Alien
210
+ Alien (Ape) 60° / (m) - Archetype - Alien
211
+ Alien (Ape) 90° / (m) - Archetype - Alien
212
+ Alien (Ape) 120° / (m) - Archetype - Alien
213
+ Alien (Ape) 150° / (m) - Archetype - Alien
214
+ Alien (Ape) 180° / (m) - Archetype - Alien
215
+ Alien (Ape) 210° / (m) - Archetype - Alien
216
+ Alien (Ape) 240° / (m) - Archetype - Alien
217
+ Alien (Ape) 270° / (m) - Archetype - Alien
218
+ Alien (Ape) 300° / (m) - Archetype - Alien
219
+ Alien (Ape) 330° / (m) - Archetype - Alien
220
+ Alien Female / (f) - Archetype - Alien
221
+ Alien Female 30° / (f) - Archetype - Alien
222
+ Alien Female 60° / (f) - Archetype - Alien
223
+ Alien Female 90° / (f) - Archetype - Alien
224
+ Alien Female 120° / (f) - Archetype - Alien
225
+ Alien Female 150° / (f) - Archetype - Alien
226
+ Alien Female 180° / (f) - Archetype - Alien
227
+ Alien Female 210° / (f) - Archetype - Alien
228
+ Alien Female 240° / (f) - Archetype - Alien
229
+ Alien Female 270° / (f) - Archetype - Alien
230
+ Alien Female 300° / (f) - Archetype - Alien
231
+ Alien Female 330° / (f) - Archetype - Alien
232
+
233
+ ==> Attributes
234
+ 3D Glasses / (m) - Attribute
235
+ 3D Glasses / (f) - Attribute
236
+ Bandana / (m) - Attribute
237
+ Bandana / (f) - Attribute
238
+ Beanie / (m) - Attribute
239
+ Beanie / (f) - Attribute
240
+ Big Beard / (m) - Attribute
241
+ Big Shades / (m) - Attribute
242
+ Big Shades / (f) - Attribute
243
+ Black Lipstick / (f) - Attribute
244
+ Blonde Bob / (f) - Attribute
245
+ Blonde Short / (f) - Attribute
246
+ Blue Eye Shadow / (f) - Attribute
247
+ Buck Teeth / (m) - Attribute
248
+ Cap / (m) - Attribute
249
+ Cap / (f) - Attribute
250
+ Cap Forward / (m) - Attribute
251
+ Cap Forward / (f) - Attribute
252
+ Chinstrap / (m) - Attribute
253
+ Choker / (f) - Attribute
254
+ Cigarette / (m) - Attribute
255
+ Cigarette / (f) - Attribute
256
+ Classic Shades / (m) - Attribute
257
+ Classic Shades / (f) - Attribute
258
+ Clown Eyes Blue / (m) - Attribute
259
+ Clown Eyes Blue / (f) - Attribute
260
+ Clown Eyes Green / (m) - Attribute
261
+ Clown Eyes Green / (f) - Attribute
262
+ Clown Hair Green / (m) - Attribute
263
+ Clown Hair Green / (f) - Attribute
264
+ Clown Nose / (m) - Attribute
265
+ Clown Nose / (f) - Attribute
266
+ Cowboy Hat / (m) - Attribute
267
+ Cowboy Hat / (f) - Attribute
268
+ Crazy Hair / (m) - Attribute
269
+ Crazy Hair / (f) - Attribute
270
+ Dark Hair / (f) - Attribute
271
+ Do-rag / (m) - Attribute
272
+ Do-rag / (f) - Attribute
273
+ Earring / (m) - Attribute
274
+ Earring / (f) - Attribute
275
+ Eye Mask / (m) - Attribute
276
+ Eye Mask / (f) - Attribute
277
+ Eye Patch / (m) - Attribute
278
+ Eye Patch / (f) - Attribute
279
+ Fedora / (m) - Attribute
280
+ Fedora / (f) - Attribute
281
+ Front Beard / (m) - Attribute
282
+ Front Beard Dark / (m) - Attribute
283
+ Frown / (m) - Attribute
284
+ Frumpy Hair / (m) - Attribute
285
+ Frumpy Hair / (f) - Attribute
286
+ Green Eye Shadow / (f) - Attribute
287
+ Goat / (m) - Attribute
288
+ Gold Chain / (m) - Attribute
289
+ Gold Chain / (f) - Attribute
290
+ ...
291
+ ```
292
+
293
+ See the [**punks.spritesheet**](https://github.com/cryptopunksnotdead/punks.spritesheet) for more.
294
+
295
+
296
+
297
+
298
+ ### Query Command
299
+
300
+ _Query (builtin off-chain) punk contract for punk text attributes by IDs - use 0 to 9999_
301
+
302
+
303
+ Let's try punk #0:
304
+
305
+ ```
306
+ $ punk query 0
307
+ # -or-
308
+ $ punk q 0
309
+ ```
310
+
311
+ resulting in:
312
+
313
+ ```
314
+ ==> (1/1) punk #0...
315
+ female_2 earring blonde_bob green_eye_shadow
316
+ ```
317
+
318
+ Let's try some top sellers:
319
+
320
+ ```
321
+ $ punk query 7804 3100 5217 8857
322
+ # -or-
323
+ $ punk q 7804 3100 5217 8857
324
+ ```
325
+
326
+ resulting in:
327
+
328
+ ```
329
+ ==> (1/4) punk #7804...
330
+ alien cap_forward pipe small_shades
331
+ ==> (2/4) punk #3100...
332
+ alien headband
333
+ ==> (3/4) punk #5217...
334
+ ape gold_chain knitted_cap
335
+ ==> (4/4) punk #8857...
336
+ zombie wild_hair 3d_glasses
337
+ ```
338
+
339
+ Note: Yes, you can pass the text attributes to the generate command
340
+ to get a free "cleanroom" copy built from scratch / zero
341
+ that you own 100% forever.
342
+
343
+
344
+
345
+ ### Tile Command
346
+
347
+ _Get punk characters via image tiles from all-in-one punk series composite (`./punks.png`) - for IDs use 0 to 9999_
348
+
349
+
350
+
351
+ Step 0 - Download the True Official Genuine Matt & John's® Punks composite image
352
+
353
+ One time / first time only - Download the True Official Genuine Matt & John's® Punks composite
354
+ housing all 10 000 Punks
355
+ in a single 2400×2400 image (~830 kb) for free.
356
+ See [`punks.png` »](https://github.com/larvalabs/cryptopunks/blob/master/punks.png)
357
+
358
+
359
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punks-zoom.png)
360
+
361
+
362
+
363
+
364
+ Now let's give it a try. Let's save punk #0, #2890, and #8219:
365
+
366
+ ```
367
+ $ punk tile 0 2890 8219
368
+ ```
369
+
370
+ printing:
371
+
372
+ ```
373
+ ==> reading >./punks.png<...
374
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
375
+ ✓ True Official Genuine Matt & John's® Punks verified
376
+ ==> (1/3) saving punk #0 to >./punk-0000.png<...
377
+ ==> (2/3) saving punk #2890 to >./punk-2890.png<...
378
+ ==> (3/3) saving punk #8219 to >./punk-8219.png<...
379
+ ```
380
+
381
+ And voila!
382
+
383
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
384
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png)
385
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png)
386
+
387
+
388
+
389
+ **Bonus: Try the `-z/--zoom` factor 2x, 4x, 8x, etc.**
390
+
391
+ Let's give it a try. Let's save punk #0, #2890, and #8219 in 2x format:
392
+
393
+ ```
394
+ $ punk --zoom 2 tile 0 2890 8219
395
+ # -or-
396
+ $ punk -z2 t 0 2890 8219
397
+ ```
398
+
399
+ printing:
400
+
401
+ ```
402
+ ==> reading >./punks.png<...
403
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
404
+ ✓ True Official Genuine Matt & John's® Punks verified
405
+ setting zoom to 2x
406
+ ==> (1/3) saving punk #0 to >punk-0000@2x.png<...
407
+ ==> (2/3) saving punk #2890 to >punk-2890@2x.png<...
408
+ ==> (3/3) saving punk #8219 to >punk-8219@2x.png<...
409
+ ```
410
+
411
+ And voila!
412
+
413
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
414
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x2.png)
415
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x2.png)
416
+
417
+ And x4:
418
+
419
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
420
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x4.png)
421
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x4.png)
422
+
423
+
424
+ And x8:
425
+
426
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
427
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x8.png)
428
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x8.png)
429
+
430
+
431
+ And so on.
432
+
433
+
434
+
435
+
436
+ **10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections**
437
+
438
+
439
+ Use the `-f, --file=FILE` option
440
+ to pass along any unauthorized edition.
441
+ Only make sure all punks are lined-up left-to-right, top-to-bottom
442
+ in the 24x24 pixel format in the composite image.
443
+
444
+
445
+ Let's try the 10 000 More Punks series housing punks in
446
+ packs of a hundred each. Let's have a looksie at the first 100
447
+ in the series.
448
+
449
+
450
+ ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-1.png)
451
+
452
+
453
+
454
+ Let's save punk #0, #19, #50, and #89
455
+ and let's add an offset of 10000
456
+ (to start counting at 10000 instead of 0):
457
+
458
+ ```
459
+ $ punk --file ./more-punks-1.png --offset 10000 tile 0 18 40 88
460
+ ```
461
+
462
+ printing:
463
+
464
+ ```
465
+ ==> reading >./more-punks-1.png<...
466
+ 240x240 (height x width)
467
+ ==> (1/4) saving punk #10000 to >./punk-10000.png<...
468
+ ==> (2/4) saving punk #10018 to >./punk-10018.png<...
469
+ ==> (3/4) saving punk #10040 to >./punk-10040.png<...
470
+ ==> (4/4) saving punk #10040 to >./punk-10088.png<...
471
+ ```
472
+
473
+ And voila!
474
+
475
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000.png)
476
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018.png)
477
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040.png)
478
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088.png)
479
+
480
+
481
+ And 4x:
482
+
483
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000x4.png)
484
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018x4.png)
485
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040x4.png)
486
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088x4.png)
487
+
488
+
489
+
490
+
491
+ Let's try the second pack - that is, punks 100 to 199 in the series.
492
+
493
+
494
+ ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-2.png)
495
+
496
+
497
+
498
+ Let's save punk #0, #79, #80, and #90
499
+ and let's add an offset of 10100
500
+ (to start counting at 10000 plus 100 instead of 0):
501
+
502
+ ```
503
+ $ punk --file ./more-punks-2.png --offset 10100 tile 0 79 80 90
504
+ ```
505
+
506
+ printing:
507
+
508
+ ```
509
+ ==> reading >./more-punks-2.png<...
510
+ 240x240 (height x width)
511
+ ==> (1/4) saving punk #10100 to >./punk-10100.png<...
512
+ ==> (2/4) saving punk #10179 to >./punk-10179.png<...
513
+ ==> (3/4) saving punk #10180 to >./punk-10180.png<...
514
+ ==> (4/4) saving punk #10190 to >./punk-10190.png<...
515
+ ```
516
+
517
+ And voila! Super rare - world's first female alien and much more.
518
+
519
+
520
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100.png)
521
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179.png)
522
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180.png)
523
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190.png)
524
+
525
+
526
+ And 4x:
527
+
528
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100x4.png)
529
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179x4.png)
530
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180x4.png)
531
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190x4.png)
532
+
533
+
534
+ And so on.
535
+
536
+
537
+
538
+
539
+ ### Flip Command
540
+
541
+ _Flip (vertically) all punk characters in all-in-one punk series composite (`./punks.png`)_
542
+
543
+
544
+ Let's generate an all new punk series by turning all punks
545
+ in the classic series
546
+ from right-looking to left-looking
547
+ by flipping vertically "one-by-one by hand [thanks to philip the intern]"
548
+ all punks. Phree the phunks! Let's give it a try:
549
+
550
+ ```
551
+ $ punk flip
552
+ # - same as -
553
+ $ punk --file ./punks.png flip
554
+ ```
555
+
556
+ printing:
557
+
558
+ ```
559
+ ==> reading >./punks.png<...
560
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
561
+ ✓ True Official Genuine Matt & John's® Punks verified
562
+ (1/10000) philip the intern flipping punk #0...
563
+ (2/10000) philip the intern flipping punk #1...
564
+ ...
565
+ ==> saving phunks flipped one-by-one by hand to >./punks-flipped.png<...
566
+ ```
567
+
568
+ And voila!
569
+
570
+ Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the `--file` option.
571
+ Example - let's flip the 1000 More Punks collection:
572
+
573
+ ```
574
+ $ punk --file ./morepunks.png flip
575
+ ```
576
+
577
+ And so on.
578
+
579
+
580
+
581
+
582
+ ### Shuffle Command
583
+
584
+ _Shuffle all punk characters (randomly) in all-in-one punk series composite (`./punks.png`)_
585
+
586
+ Let's generate an all new punks series by randomly shuffling
587
+ "one-by-one by hand [thanks to philip the intern]" all punks.
588
+ Let's give it a try:
589
+
590
+ ```
591
+ $ punk shuffle
592
+ # - same as -
593
+ $ punk --file ./punks.png --seed 4142 shuffle
594
+ ```
595
+
596
+ printing:
597
+
598
+ ```
599
+ ==> reading >./punks.png<...
600
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
601
+ ✓ True Official Genuine Matt & John's® Punks verified
602
+ using random generation number seed >4142< for shuffle
603
+ #1369 now #0
604
+ #590 now #1
605
+ #1635 now #2
606
+ #3199 now #3
607
+ ...
608
+ ==> saving p(h)unks shuffled one-by-one by hand to >./punks-4142.png<...
609
+ ```
610
+
611
+ And voila!
612
+
613
+ Note: The shuffle command also prints out
614
+ all new index numbers for easy reference (to reuse attributes and so on):
615
+
616
+ ```
617
+ All 10000 index numbers (zero-based) for reference using seed 4142:
618
+
619
+ [1369, 590, 1635, 3199, 1887, 7719, 5747, 2146, 6671, 7144,
620
+ 1428, 7817, 1219, 163, 7186, 8488, 7191, 5240, 7226, 6574,
621
+ 1619, 1701, 3018, 4745, 2438, 6474, 4756, 9300, 9382, 9528,
622
+ 102, 1847, 2848, 8369, 7825, 842, 66, 1035, 2934, 2442,
623
+ ...
624
+ 8789, 7299, 4403, 5972, 338, 5635, 7566, 828, 8987, 9777]
625
+ ```
626
+
627
+
628
+
629
+ Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the `--file` option.
630
+ Example - let's shuffle the 1000 More Punks collection:
631
+
632
+ ```
633
+ $ punk --file ./morepunks.png shuffle
634
+ ```
635
+
636
+ And so on.
637
+
638
+
639
+
640
+
641
+ ## Usage in Your Scripts
642
+
643
+
644
+ Yes, you can generate punks in your own scripts
645
+ and much more.
646
+ See the
647
+ [**Programming (Crypto) Punk (Pixel) Profile Pictures & (Generative) Art - Step-by-Step Booklet / Guide »**](https://github.com/cryptopunksnotdead/programming-cryptopunks)
648
+
649
+
650
+
651
+ ## Install
652
+
653
+ Just install the gem:
654
+
655
+ $ gem install cryptopunks
656
+
657
+
658
+ ## License
659
+
660
+ The scripts are dedicated to the public domain.
661
+ Use it as you please with no restrictions whatsoever.
662
+
663
+
664
+ ## Questions? Comments?
665
+
666
+ Post them on the [D.I.Y. Punk (Pixel) Art reddit](https://old.reddit.com/r/DIYPunkArt). Thanks.