<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sun
    是選擇你愛的人還是愛你的人?
    posts - 8,comments - 14,trackbacks - 0
    以前公司業務人員手動操作,一天也只能獲取1000來條數據,通過程序獲得了非常大的改觀。程序目的是自動驗證登錄并查詢獲取相關信息,對驗證碼上每個字顯示的寬度有要求,需要事先預設好,因為需要將驗證碼圖片上的字分別裁剪單獨分析。當然一般一個網站的驗證碼寬度都相對固定。




      1package com.xiaohang.readcode;
      2
      3import java.awt.*;
      4import java.awt.image.BufferedImage;
      5import java.io.*;
      6import java.net.URL;
      7import javax.imageio.*;
      8
      9public class ImageCode {
     10    BufferedImage imd; // 待識別圖像
     11
     12    private int iw, ih; // 圖像寬和高
     13
     14    //public final static String path = "E:\\codeimages\\1.bmp";
     15
     16    public  static void main(String []args){
     17        
     18        try{
     19            
     20            ImageCode app = new ImageCode();
     21            
     22            //String s = app.getImageNum("http://*****.cjn.cn/gcode.act");
     23            String s = app.getImageNum("E:\\codeimages\\1.bmp");
     24            System.out.println("result is : " + s);
     25            
     26        }
    catch(Exception ex)
     27        {
     28            ex.printStackTrace();
     29        }

     30    }

     31    
     32    public String getImageNum(String file) {
     33
     34        StringBuffer sb = new StringBuffer("");
     35        try {
     36        //    imd = ImageIO.read(new URL(file)); // 用ImageIO的靜態方法讀取圖像
     37            imd = ImageIO.read(new File(file));
     38            BufferedImage newim[] = new BufferedImage[4];
     39            int[] x = new int[4];
     40            // 將圖像分成4塊,因為要處理的文件都有四個數字
     41            newim[0= imd.getSubimage(501015);
     42            newim[1= imd.getSubimage(1801015);
     43            newim[2= imd.getSubimage(3101015);
     44            newim[3= imd.getSubimage(4401015);
     45        
     46                 for (int k = 0; k < 4; k++{
     47                x[k] = 0;
     48            //    ImageIO.write(newim[k], "JPEG", new File("E:\\codeimages\\"+k+".jpeg"));
     49                this.iw = newim[k].getWidth(null);
     50                this.ih = newim[k].getHeight(null);
     51                int[] pix = new int[iw * ih];
     52                // 二進制圖像,將像數讀取出來,轉換成0、1圖像數組
     53            
     54                for (int i = 0; i < ih; i++{
     55                    for (int j = 0; j < iw; j++{
     56                        pix[i * (iw) + j] = newim[k].getRGB(j, i);
     57                        String code = String.valueOf(pix[i * (iw) + j]);
     58                        if (code.length() >= 8)
     59                            pix[i * (iw) + j] = 1;
     60                        else
     61                            pix[i * (iw) + j] = 0;
     62
     63                        x[k] = x[k] + pix[i * (iw) + j];
     64                    }

     65                }

     66
     67                // 得到匹配的數字
     68                int r = this.getMatchNum(pix);
     69                sb.append(r);
     70            //    System.out.println("x=" + x[k]);
     71            }

     72
     73        }
     catch (Exception ex) {
     74            ex.printStackTrace();
     75        }

     76        return sb.toString();
     77    }

     78    
     79    static int[][] value = {
     80             // 0
     81                   {
     82                    0000000000,
     83                    0000000000,
     84                    0000110000,
     85                    0001111000,
     86                    0011001100,
     87                    0011001100,
     88                    0011001100,
     89                    0011001100,
     90                    0011001100,
     91                    0011001100,
     92                    0011001100,
     93                    0001111000,
     94                    0000110000,
     95                    0000000000,
     96                    0000000000
     97                    }
    ,
     98            // 1
     99                  
    100                    0000000000,
    101                    0000000000,
    102                    0000111000,
    103                    0000111000,
    104                    0000011000,
    105                    0000011000,
    106                    0000011000,
    107                    0000011000,
    108                    0000011000,
    109                    0000011000,
    110                    0000011000,
    111                    0000011000,
    112                    0001111100,
    113                    0001111100,
    114                    0000000000
    115                    }
    ,
    116            // 2
    117                    
    118                        0000000000,
    119                        0000000000,
    120                        0001110000,
    121                        0011111000,
    122                        0011001100,
    123                        0000001100,
    124                        0000001100,
    125                        0000011000,
    126                        0000110000,
    127                        0001100000,
    128                        0011000000,
    129                        0011111100,
    130                        0111111100,
    131                        0000000000,
    132                        0000000000
    133                    }
    ,
    134                    
    135                    
    136            // 3
    137                    
    138                        0000000000,
    139                        0000000000,
    140                        0001111000,
    141                        0011111100,
    142                        0010001100,
    143                        0000011000,
    144                        0000110000,
    145                        0001111000,
    146                        0000111100,
    147                        0000001100,
    148                        0000001100,
    149                        0011111000,
    150                        0011110000,
    151                        0000000000,
    152                        0000000000
    153                    }
    ,
    154            // 4
    155                    
    156                        0000000000,
    157                        0000000000,
    158                        0000001000,
    159                        0000011000,
    160                        0000111000,
    161                        0000111000,
    162                        0001111000,
    163                        0011011000,
    164                        0111111100,
    165                        0111111100,
    166                        0000011000,
    167                        0000011000,
    168                        0000011000,
    169                        0000000000,
    170                        0000000000
    171                    }
    ,
    172            // 5
    173                    
    174                        0000000000,
    175                        0000000000,
    176                        0001111100,
    177                        0001111100,
    178                        0001100000,
    179                        0011110000,
    180                        0010111000,
    181                        0000001100,
    182                        0000001100,
    183                        0000001100,
    184                        0000001100,
    185                        0011111000,
    186                        0011110000,
    187                        0000000000,
    188                        0000000000
    189                    }
    ,
    190            // 6
    191                    
    192                        0000000000,
    193                        0000000000,
    194                        0001111100,
    195                        0011111100,
    196                        0011000000,
    197                        0011000000,
    198                        0011110000,
    199                        0011111000,
    200                        0011001100,
    201                        0011001100,
    202                        0011001100,
    203                        0001111000,
    204                        0000110000,
    205                        0000000000,
    206                        0000000000
    207                    }
    ,
    208            // 7
    209                    
    210                        0000000000,
    211                        0000000000,
    212                        0011111100,
    213                        0111111100,
    214                        0100001100,
    215                        0000011000,
    216                        0000011000,
    217                        0000011000,
    218                        0000110000,
    219                        0000110000,
    220                        0000110000,
    221                        0001100000,
    222                        0001100000,
    223                        0001100000,
    224                        0000000000
    225                    }
    ,
    226            // 8
    227                    
    228                        0000000000,
    229                        0000000000,
    230                        0001111000,
    231                        0011111100,
    232                        0011001100,
    233                        0011001100,
    234                        0001111000,
    235                        0000110000,
    236                        0001111000,
    237                        0011001100,
    238                        0011001100,
    239                        0011111100,
    240                        0001111000,
    241                        0000000000,
    242                        0000000000
    243                        }
    ,
    244            // 9
    245                        
    246                            0000000000,
    247                            0000000000,
    248                            0000110000,
    249                            0001001000,
    250                            0010000100,
    251                            0010000100,
    252                            0010000100,
    253                            0001001100,
    254                            0000110100,
    255                            0000001000,
    256                            0000001000,
    257                            0000110000,
    258                            0011000000,
    259                            0000000000,
    260                            0000000000
    261                            }
     }
    ;
    262    
    263    // 圖像像素相減去最小絕對值得到最接近結果
    264    public int getMatchNum(int[] pix){
    265        
    266        int result = -1;
    267        int temp = 100;
    268        int x;
    269        for(int k = 0 ; k < 10 ; k++){
    270            
    271            x = 0 ; 
    272            for(int i = 0 ; i < 150 ; i++){   // lenght=120
    273                x = x+Math.abs(pix[i] - value[k][i]);    // 取絕對值            
    274            }

    275            
    276        if(x < temp){
    277            temp = x;
    278            result = k;
    279        }

    280        }

    281        return result;
    282    }

    283    
    284
    285}

    286

    原創文章,轉載請注明出處。
    http://www.tkk7.com/beijing2008/articles/285556.html



    posted on 2009-07-05 15:28 .Sun 閱讀(852) 評論(1)  編輯  收藏

    FeedBack:
    # re: 讀取圖片驗證碼
    2009-08-19 16:35 | 陌路人
    受益匪淺。
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV午夜成人影院老师机影院| 成人看的午夜免费毛片| a毛片免费观看完整| 一级毛片免费播放试看60分钟| 国产午夜亚洲精品不卡免下载| 亚洲AV电影天堂男人的天堂| 亚洲精品无码专区在线播放| 亚洲成a人无码亚洲成www牛牛| 亚洲Av永久无码精品黑人| 亚洲AV无码一区二区三区电影| 国产精品亚洲精品久久精品 | 日韩精品免费一区二区三区| 在线播放免费人成视频在线观看| 无码视频免费一区二三区| 免费爱爱的视频太爽了| 国产片免费福利片永久| 亚洲А∨精品天堂在线| 亚洲欧洲精品成人久久奇米网| 亚洲香蕉成人AV网站在线观看| 日韩亚洲欧洲在线com91tv| 亚洲欧洲一区二区| 亚洲国产成人精品无码一区二区| 亚洲中文字幕AV在天堂| 亚洲AV无码成人网站在线观看| 麻豆va在线精品免费播放| 精品一区二区三区免费观看 | 色噜噜狠狠色综合免费视频| 又硬又粗又长又爽免费看 | 九九免费观看全部免费视频| 国产精品极品美女自在线观看免费 | 亚洲综合av永久无码精品一区二区| 国产精品亚洲成在人线| 亚洲精品国产福利在线观看| 久久国产亚洲精品| 特级毛片爽www免费版| 老司机69精品成免费视频| 国产在线观看麻豆91精品免费 | 亚洲免费在线播放| 午夜精品在线免费观看| 亚洲视频在线精品| 亚洲欧洲综合在线|