forked from karthikb351/CaptchaParser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaptchaParser.php
More file actions
815 lines (786 loc) · 38.5 KB
/
CaptchaParser.php
File metadata and controls
815 lines (786 loc) · 38.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
<?php
// Integration by SchoolBoy twitter(@5ch00lb0y)
// Github : http://github.com/sch00lb0y
class CaptchaParser {
private $key = array(
"0" => array(
array("0", "0", "0", "1", "1", "1", "1", "0", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "1", "1", "0"),
array("1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "0", "0", "0", "1", "1", "0", "1", "1"),
array("1", "1", "0", "0", "1", "1", "0", "0", "1", "1"),
array("1", "1", "0", "1", "1", "0", "0", "0", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1"),
array("0", "1", "1", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "0", "0", "0")
),
"1" => array(
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1")
),
"2" => array(
array("0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "0", "0", "0", "1", "1", "1", "1", "0"),
array("1", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "1", "1", "1", "1", "0", "0", "0", "0"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1")
),
"3" => array(
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0")
),
"4" => array(
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "1", "1", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0", "0")
),
"5" => array(
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0")
),
"6" => array(
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0")
),
"7" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0")
),
"8" => array(
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "0", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0")
),
"9" => array(
array("0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "1", "1", "1", "0", "1", "1", "1"),
array("0", "0", "1", "1", "1", "1", "1", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0")
),
"A" => array(
array("0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "0", "0", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1")
),
"B" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0")
),
"C" => array(
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "1"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "1", "1"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0")
),
"D" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0")
),
"E" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1")
),
"F" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0")
),
"G" => array(
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0")
),
"H" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1")
),
"I" => array(
array("1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1")
),
"J" => array(
array("0", "0", "1", "1", "1", "1", "1", "1"),
array("0", "0", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "0", "0")
),
"K" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "0", "1", "1", "1", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1")
),
"L" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1")
),
"M" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "0", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "1"),
array("1", "1", "1", "0", "1", "1", "1", "1", "1", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1")
),
"N" => array(
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1"),
array("1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1")
),
"O" => array(
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "0")
),
"P" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0")
),
"Q" => array(
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "1", "1"),
array("1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1"),
array("1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1"),
array("1", "1", "0", "0", "0", "0", "0", "1", "0", "0", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "0", "1", "1"),
array("0", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "1", "0")
),
"R" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("1", "1", "1", "0", "0", "1", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1")
),
"S" => array(
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "0"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "0"),
array("1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0")
),
"T" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0")
),
"U" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0")
),
"V" => array(
array("1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0")
),
"W" => array(
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1", "1", "0", "0")
),
"X" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "1", "1", "1", "1", "0", "0", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0"),
array("0", "1", "1", "1", "1", "0", "0", "1", "1", "1", "1", "0"),
array("1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1")
),
"Y" => array(
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "1"),
array("0", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0"),
array("0", "1", "1", "1", "1", "0", "1", "1", "1", "1", "0"),
array("0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "0"),
array("0", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0")
),
"Z" => array(
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "0", "1", "1", "1", "1"),
array("0", "0", "0", "0", "0", "1", "1", "1", "1", "0"),
array("0", "0", "0", "0", "0", "1", "1", "1", "0", "0"),
array("0", "0", "0", "0", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "1", "0", "0", "0"),
array("0", "0", "0", "1", "1", "1", "0", "0", "0", "0"),
array("0", "0", "1", "1", "1", "0", "0", "0", "0", "0"),
array("0", "1", "1", "1", "1", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "0", "0", "0", "0", "0", "0"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1"),
array("1", "1", "1", "1", "1", "1", "1", "1", "1", "1")
)
);
private $order = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
private function ConvertBMP2GD($src, $dest = false) {
if (!($src_f = fopen($src, "rb"))) {
return false;
}
if (!($dest_f = fopen($dest, "wb"))) {
return false;
}
$header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f, 14));
$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40));
extract($info);
extract($header);
if ($type != 0x4D42) { // signature "BM"
return false;
}
$palette_size = $offset - 54;
$ncolor = $palette_size / 4;
$gd_header = "";
// true-color vs. palette
$gd_header.= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF";
$gd_header.= pack("n2", $width, $height);
$gd_header.= ($palette_size == 0) ? "\x01" : "\x00";
if ($palette_size) {
$gd_header.= pack("n", $ncolor);
}
// no transparency
$gd_header.= "\xFF\xFF\xFF\xFF";
fwrite($dest_f, $gd_header);
if ($palette_size) {
$palette = fread($src_f, $palette_size);
$gd_palette = "";
$j = 0;
while ($j < $palette_size) {
$b = $palette{$j++};
$g = $palette{$j++};
$r = $palette{$j++};
$a = $palette{$j++};
$gd_palette.= "$r$g$b$a";
}
$gd_palette.= str_repeat("\x00\x00\x00\x00", 256 - $ncolor);
fwrite($dest_f, $gd_palette);
}
$scan_line_size = (($bits * $width) + 7) >> 3;
$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0;
for ($i = 0, $l = $height - 1; $i < $height; $i++, $l--) {
// BMP stores scan lines starting from bottom
fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l));
$scan_line = fread($src_f, $scan_line_size);
if ($bits == 24) {
$gd_scan_line = "";
$j = 0;
while ($j < $scan_line_size) {
$b = $scan_line{$j++};
$g = $scan_line{$j++};
$r = $scan_line{$j++};
$gd_scan_line.= "\x00$r$g$b";
}
}
else
if ($bits == 8) {
$gd_scan_line = $scan_line;
}
else
if ($bits == 4) {
$gd_scan_line = "";
$j = 0;
while ($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr($byte >> 4);
$p2 = chr($byte & 0x0F);
$gd_scan_line.= "$p1$p2";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
else
if ($bits == 1) {
$gd_scan_line = "";
$j = 0;
while ($j < $scan_line_size) {
$byte = ord($scan_line{$j++});
$p1 = chr((int)(($byte & 0x80) != 0));
$p2 = chr((int)(($byte & 0x40) != 0));
$p3 = chr((int)(($byte & 0x20) != 0));
$p4 = chr((int)(($byte & 0x10) != 0));
$p5 = chr((int)(($byte & 0x08) != 0));
$p6 = chr((int)(($byte & 0x04) != 0));
$p7 = chr((int)(($byte & 0x02) != 0));
$p8 = chr((int)(($byte & 0x01) != 0));
$gd_scan_line.= "$p1$p2$p3$p4$p5$p6$p7$p8";
}
$gd_scan_line = substr($gd_scan_line, 0, $width);
}
fwrite($dest_f, $gd_scan_line);
}
fclose($src_f);
fclose($dest_f);
return true;
}
private function imagecreatefrombmp($filename)
{
$tmp_name = tempnam("/tmp", "GD");
if ($this->ConvertBMP2GD($filename, $tmp_name)) {
$img = imagecreatefromgd($tmp_name);
unlink($tmp_name);
return $img;
}
return false;
}
private function pixelLoad($image) {
$pixelArray = array();
$xlength = imagesx($image);
$ylength = imagesy($image);
for ($y=0; $y < $ylength; $y++) {
$subArray = array();
for ($x=0; $x < $xlength ; $x++) {
$rgb = imagecolorat($image, $x, $y);
$colors = imagecolorsforindex($image, $rgb);
if ($colors["red"]==23 && $colors["green"] == 133 && $colors["blue"] == 12) {
array_push($subArray,"1");
} else {
array_push($subArray,"0");
}
}
array_push($pixelArray,$subArray);
}
return $pixelArray;
}
private function skip($skipstart, $skipend, $y) {
$flag = false;
for ($i=0; $i < count($skipstart); $i++) {
if ($skipstart[$i] <= $y && $skipend[$i] >=$y ) {
$flag = true;
break;
}
}
return $flag;
}
private function matchImg($rx, $ry, $img, $mask) {
$flag = true;
$breakflag = false;
$count = 0;
for($x = 0 ; $x < count($mask) ; ++$x) {
for($y = 0 ; $y < count($mask[0]) ; ++$y) {
if ($mask[$x][$y] == "1") {
if ($x+$rx<count($img)) {
if ($y+$ry<count($img[$x+$rx])) {
if ($img[$x+$rx][$y+$ry] == "1") {
$count = $count + 1;
} else {
$breakflag = true;
$flag = false;
break;
}
} else {
$breakflag = true;
$flag = false;
break;
}
} else {
$breakflag = true;
$flag = false;
break;
}
}
}
if ($breakflag) {
break;
}
}
if($count == 0){
$flag = false;
}
return $flag;
}
private function getCaptchaFromPixel($img) {
global $key, $order;
for ($x=0; $x < count($img) ; $x++) {
for ($y=0; $y < count($img[0]) ; $y++) {
if ($x != 0 && $x != 24) {
if ($img[$x-1][$y] == "0" && $img[$x][$y] == "1" && $img[$x+1][$y] == "0") {
$img[$x][$y] = "0";
}
}
}
}
$skipstart = array();
$skipend = array();
$sorter = array();
$captcha = array();
for($l = 0 ; $l < 36 ; $l++){
$mask = $this->key[$this->order[$l]];
$f = 0;
for ($x=0; $x < count($img) ; $x++) {
for ($y=0; $y < count($img[$x]) ; $y++) {
if ($this->skip($skipstart, $skipend, $y)) {
continue;
} else {
if($this->matchImg($x, $y, $img, $mask)){
array_push($skipstart, $y);
array_push($skipend, $y + count($mask[0]));
array_push($sorter, $y);
array_push($captcha,$this->order[$l]);
$f = $f + 1;
}
}
}
if ($f == 6) {
break;
}
}
}
$captcha = $this->sort($sorter,$captcha);
$result="";
foreach ($captcha as $key => $value) {
$result.=$value;
}
return $result;
}
private function sort ($sorter, $captcha) {
for ($i=0; $i < count($sorter) ; $i++) {
for ($j=0; $j < count($sorter); $j++) {
if ($sorter[$i] < $sorter[$j]) {
$temp = $sorter[$i];
$sorter[$i] = $sorter[$j];
$sorter[$j] = $temp;
$temp = $captcha[$i];
$captcha[$i] = $captcha[$j];
$captcha[$j] = $temp;
}
}
}
return $captcha;
}
public function getCaptcha($src) {
$imgsrc = $this->imagecreatefrombmp($src);
$pix = $this->pixelLoad($imgsrc);
return $this->getCaptchaFromPixel($pix);
}
}
?>