android直接从图片中对二维码编码解码

001package com.google.zxing.client.android;
002  
003import java.util.Hashtable;
004  
005import android.app.Activity;
006import android.graphics.Bitmap;
007import android.graphics.drawable.BitmapDrawable;
008import android.os.Bundle;
009import android.util.Log;
010import android.view.View;
011import android.view.View.OnClickListener;
012import android.widget.Button;
013import android.widget.EditText;
014import android.widget.ImageView;
015import android.widget.TextView;
016  
017import com.google.zxing.BarcodeFormat;
018import com.google.zxing.BinaryBitmap;
019import com.google.zxing.ChecksumException;
020import com.google.zxing.EncodeHintType;
021import com.google.zxing.FormatException;
022import com.google.zxing.NotFoundException;
023import com.google.zxing.Result;
024import com.google.zxing.WriterException;
025import com.google.zxing.common.BitMatrix;
026import com.google.zxing.common.HybridBinarizer;
027import com.google.zxing.qrcode.QRCodeReader;
028import com.google.zxing.qrcode.QRCodeWriter;
029import com.test.RGBLuminanceSource;
030  
031public class TestActivity extends Activity {
032    private static final String TAG = "TestActivity";
033      
034    String path;
035    private final static String pFormat = "png";
036  
037          
038  
039    protected void onCreate(Bundle savedInstanceState) {
040        super.onCreate(savedInstanceState);
041        setContentView(R.layout.testactivity);
042        //set
043        Button btn2 = (Button)findViewById(R.id.Button03);
044        btn2.setOnClickListener(new OnClickListener() {
045              
046            @Override
047            public void onClick(View view) {
048                ImageView imgView = (ImageView)findViewById(R.id.ImageView01);
049                QRCodeReader reader = new QRCodeReader(); 
050                int width = 200, height = 200;  
051                QRCodeWriter writer = new QRCodeWriter();
052                try {
053                    EditText edit = (EditText)findViewById(R.id.EditText01);
054                    //edit.getText();
055                    Log.i(TAG, "编辑框中的内容: " + edit.getText().toString());
056//                  System.out.println(edit.getText().toString());
057                    if(edit.getText().toString().length()<1)
058                    {
059                        return;
060                    }
061                      
062                    BitMatrix martix = writer.encode(edit.getText().toString(), BarcodeFormat.QR_CODE, width, height);
063                    System.out.println("w:"+martix.width+"h:"+martix.height); 
064                    String imageFormat = "png"
065                    Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
066                    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
067                BitMatrix bitMatrix = new QRCodeWriter().encode(edit.getText().toString(),BarcodeFormat.QR_CODE, width, height,hints);
068                     int[] pixels = new int[width * height];    
069                     for (int y = 0; y < height; y++) {    
070                         for (int x = 0; x < width; x++) {    
071                             if(bitMatrix.get(x, y)){    
072                                 pixels[y * width + x] = 0xff000000;    
073                             }else{
074                                 pixels[y * width + x] = 0xffffffff;
075                             }    
076                                   
077                         }    
078                     }    
079                           
080                     Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);    
081                          
082                     bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
083                     imgView.setImageBitmap(bitmap);
084//                   RGBLuminanceSource source = new RGBLuminanceSource(bitmap);
085//                  LuminanceSource source = new RGBLuminanceSource(path);  
086//                  BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));  
087//                   QRCodeReader reader2= new QRCodeReader();
088//                   Result result = reader2.decode(bitmap1);
089//                   System.out.println("res"+result.getText());
090                       
091                } catch (WriterException e) {
092                    // TODO Auto-generated catch block
093                    e.printStackTrace();
094                }
095            }
096        });
097          
098        Button btn1 = (Button)findViewById(R.id.Button01);
099        btn1.setOnClickListener(new OnClickListener() {
100              
101            @Override
102            public void onClick(View v) {
103                // TODO Auto-generated method stub
104                ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
105                Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
106                hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
107                Bitmap bitmap = ((BitmapDrawable)imgView.getDrawable()).getBitmap();
108                RGBLuminanceSource source = new RGBLuminanceSource(bitmap);
109//                  LuminanceSource source = new RGBLuminanceSource(path);  
110                    BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));  
111                     QRCodeReader reader2= new QRCodeReader();
112                     Result result;
113                   try {
114                     result = reader2.decode(bitmap1,hints);
115                     System.out.println("res"+result.getText());
116                     TextView text  = (TextView)findViewById(R.id.TextView01);
117                    text.setText(result.getText());
118                    } catch (NotFoundException e) {
119                        // TODO Auto-generated catch block
120                        e.printStackTrace();
121                    } catch (ChecksumException e) {
122                        // TODO Auto-generated catch block
123                        e.printStackTrace();
124                    } catch (FormatException e) {
125                        // TODO Auto-generated catch block
126                        e.printStackTrace();
127                    }
128                    // System.out.println("res"+result.getText());
129            }
130        });
131    }
132}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值