您的位置:首页 > 移动开发 > Android开发

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

2012-03-29 11:30 295 查看
001
package
com.google.zxing.client.android;
002
003
import

java.util.Hashtable;
004
005
import

android.app.Activity;
006
import

android.graphics.Bitmap;
007
import

android.graphics.drawable.BitmapDrawable;
008
import

android.os.Bundle;
009
import

android.util.Log;
010
import

android.view.View;
011
import

android.view.View.OnClickListener;
012
import

android.widget.Button;
013
import

android.widget.EditText;
014
import

android.widget.ImageView;
015
import

android.widget.TextView;
016
017
import

com.google.zxing.BarcodeFormat;
018
import

com.google.zxing.BinaryBitmap;
019
import

com.google.zxing.ChecksumException;
020
import

com.google.zxing.EncodeHintType;
021
import

com.google.zxing.FormatException;
022
import

com.google.zxing.NotFoundException;
023
import

com.google.zxing.Result;
024
import

com.google.zxing.WriterException;
025
import

com.google.zxing.common.BitMatrix;
026
import

com.google.zxing.common.HybridBinarizer;
027
import

com.google.zxing.qrcode.QRCodeReader;
028
import

com.google.zxing.qrcode.QRCodeWriter;
029
import

com.test.RGBLuminanceSource;
030
031
public
class
TestActivity
extends

Activity{
032
private

static
final

StringTAG=
"TestActivity"
;
033
034
Stringpath;
035
private

final
static

StringpFormat=
"png"
;
036
037
038
039
protected

void
onCreate(BundlesavedInstanceState){
040
super
.onCreate(savedInstanceState);
041
setContentView(R.layout.testactivity);
042
//set
043
Buttonbtn2=(Button)findViewById(R.id.Button03);
044
btn2.setOnClickListener(
new

OnClickListener(){
045
046
@Override
047
public

void
onClick(Viewview){
048
ImageViewimgView=(ImageView)findViewById(R.id.ImageView01);
049
QRCodeReaderreader=
new
QRCodeReader();
050
int

width=
200
,height=
200
;
051
QRCodeWriterwriter=
new
QRCodeWriter();
052
try

{
053
EditTextedit=(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
BitMatrixmartix=writer.encode(edit.getText().toString(),BarcodeFormat.QR_CODE,width,height);
063
System.out.println(
"w:"
+martix.width+
"h:"
+martix.height);
064
StringimageFormat=
"png"
;
065
Hashtable<EncodeHintType,String>hints=
new
Hashtable<EncodeHintType,String>();
066
hints.put(EncodeHintType.CHARACTER_SET,
"utf-8"
);

067
BitMatrixbitMatrix=
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
Bitmapbitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
081
082
bitmap.setPixels(pixels,
0
,width,

0
,
0
,width,height);
083
imgView.setImageBitmap(bitmap);
084
//RGBLuminanceSourcesource=newRGBLuminanceSource(bitmap);
085
//LuminanceSourcesource=newRGBLuminanceSource(path);
086
//BinaryBitmapbitmap1=newBinaryBitmap(newHybridBinarizer(source));
087
//QRCodeReaderreader2=newQRCodeReader();
088
//Resultresult=reader2.decode(bitmap1);
089
//System.out.println("res"+result.getText());
090
091
}
catch
(WriterExceptione){
092
//TODOAuto-generatedcatchblock
093
e.printStackTrace();
094
}
095
}
096
});
097
098
Buttonbtn1=(Button)findViewById(R.id.Button01);
099
btn1.setOnClickListener(
new

OnClickListener(){
100
101
@Override
102
public

void
onClick(Viewv){
103
//TODOAuto-generatedmethodstub
104
ImageViewimgView=(ImageView)findViewById(R.id.ImageView01);
105
Hashtable<EncodeHintType,String>hints=
new
Hashtable<EncodeHintType,String>();
106
hints.put(EncodeHintType.CHARACTER_SET,
"utf-8"
);

107
Bitmapbitmap=((BitmapDrawable)imgView.getDrawable()).getBitmap();
108
RGBLuminanceSourcesource=
new
RGBLuminanceSource(bitmap);
109
//LuminanceSourcesource=newRGBLuminanceSource(path);
110
BinaryBitmapbitmap1=
new
BinaryBitmap(
new

HybridBinarizer(source));
111
QRCodeReaderreader2=
new
QRCodeReader();
112
Resultresult;
113
try

{
114
result=reader2.decode(bitmap1,hints);
115
System.out.println(
"res"
+result.getText());
116
TextViewtext=(TextView)findViewById(R.id.TextView01);
117
text.setText(result.getText());
118
}
catch
(NotFoundExceptione){
119
//TODOAuto-generatedcatchblock
120
e.printStackTrace();
121
}
catch
(ChecksumExceptione){
122
//TODOAuto-generatedcatchblock
123
e.printStackTrace();
124
}
catch
(FormatExceptione){
125
//TODOAuto-generatedcatchblock
126
e.printStackTrace();
127
}
128
//System.out.println("res"+result.getText());
129
}
130
});
131
}

132
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: