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

android 拍照和上传

2013-11-10 18:39 483 查看
package
com.droidstouch.takephoto;
002
003
import
java.io.ByteArrayOutputStream;
004
005
import
java.io.File;
006
import
android.app.Activity;
007
import
android.content.Intent;
008
import
android.graphics.Bitmap;
009
import
android.net.Uri;
010
import
android.os.Bundle;
011
import
android.os.Environment;
012
import
android.provider.MediaStore;
013
import
android.view.View;
014
import
android.view.View.OnClickListener;
015
import
android.widget.Button;
016
import
android.widget.ImageView;
017
018
public
class
PhotoActivity
extends

Activity {
019
public

static
final
int
NONE =
0
;
020
021
public

static
final
int
PHOTOHRAPH =
1
;
// 拍照
022
023
public

static
final
int
PHOTOZOOM =
2
;
// 缩放
024
025
public

static
final
int
PHOTORESOULT =
3
;
// 结果
026
027
public

static
final
String IMAGE_UNSPECIFIED =
"image/*"
;
028
029
ImageView imageView =
null
;
030
031
Button button0 =
null
;
032
033
Button button1 =
null
;
034
035
@Override
036
public

void
onCreate(Bundle savedInstanceState) {
037
038
super
.onCreate(savedInstanceState);
039
040
setContentView(R.layout.photo);
041
042
imageView = (ImageView) findViewById(R.id.imageID);
043
044
button0 = (Button) findViewById(R.id.btn_01);
045
046
button1 = (Button) findViewById(R.id.btn_02);
047
048
button0.setOnClickListener(
new

OnClickListener() {
049
050
@Override
051
public

void
onClick(View v) {
052
053
Intent intent =
new
Intent(Intent.ACTION_PICK,
null
);
054
055
intent.setDataAndType(
056
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
057
IMAGE_UNSPECIFIED);
058
059
startActivityForResult(intent, PHOTOZOOM);
060
061
}
062
063
});
064
065
button1.setOnClickListener(
new

OnClickListener() {
066
067
@Override
068
public

void
onClick(View v) {
069
070
Intent intent =
new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
071
072
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
new

File(
073
Environment.getExternalStorageDirectory(),
"temp.jpg"
)));
074
075
startActivityForResult(intent, PHOTOHRAPH);
076
077
}
078
079
});
080
081
}
082
083
@Override
084
protected

void
onActivityResult(
int

requestCode,
int

resultCode, Intent data) {
085
086
if

(resultCode == NONE)
087
088
return
;
089
090
// 拍照
091
092
if

(requestCode == PHOTOHRAPH) {
093
094
// 设置文件保存路径这里放在跟目录下
095
096
File picture =
new
File(Environment.getExternalStorageDirectory()
097
+
"/temp.jpg"
);
098
099
startPhotoZoom(Uri.fromFile(picture));
100
101
}
102
103
if

(data ==
null
)
104
105
return
;
106
107
// 读取相册缩放图片
108
109
if

(requestCode == PHOTOZOOM) {
110
111
startPhotoZoom(data.getData());
112
113
}
114
115
// 处理结果
116
117
if

(requestCode == PHOTORESOULT) {
118
119
Bundle extras = data.getExtras();
120
121
if

(extras !=
null
) {
122
123
Bitmap photo = extras.getParcelable(
"data"
);
124
125
ByteArrayOutputStream stream =
new
ByteArrayOutputStream();
126
127
photo.compress(Bitmap.CompressFormat.JPEG,
75
, stream);
// (0 -
128
// 100)压缩文件
129
130
imageView.setImageBitmap(photo);
131
132
}
133
134
}
135
136
super
.onActivityResult(requestCode,resultCode, data);
137
138
}
139
140
public

void
startPhotoZoom(Uri uri) {
141
142
Intent intent =
new
Intent(
"com.android.camera.action.CROP"
);
143
144
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
145
146
intent.putExtra(
"crop"
,
"true"
);
147
148
// aspectX aspectY 是宽高的比例
149
150
intent.putExtra(
"aspectX"
,
1
);
151
152
intent.putExtra(
"aspectY"
,
1
);
153
154
// outputX outputY 是裁剪图片宽�?
155
156
intent.putExtra(
"outputX"
,
64
);
157
158
intent.putExtra(
"outputY"
,
64
);
159
160
intent.putExtra(
"return-data"
,
true
);
161
162
startActivityForResult(intent, PHOTORESOULT);
163
164
}
165
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: