项目中使用的---使用系统照相机拍照预览上传
2012-04-06 23:09
169 查看
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:gravity="center_horizontal">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用系统照相机拍照" android:onClick="click"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
代码:
package uk.ac.essex.camerademo1;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Display;
import android.view.View;
import android.widget.ImageView;
public class Camerademo1Activity extends Activity {
private static final int CAPTURE_PIC = 0;
private ImageView imageView;
private int width;
private int height;
private String imageFilePath;
private Uri imageFileUri;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView) findViewById(R.id.imageView);
init();
}
private void init() {
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
imageFilePath = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory() + "/1.jpg" : null;
imageFileUri = Uri.fromFile(new File(imageFilePath));
}
public void click(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//相机捕捉图片的意图
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);//指定系统相机拍照保存在imageFileUri所指的位置
startActivityForResult(intent, CAPTURE_PIC);//启动系统相机,等待返回
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == CAPTURE_PIC) {
Options options = new Options();
options.inJustDecodeBounds = true;//设置解码只是为了获取图片的width和height值,而不是真正获取图片
Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码后可以options.outWidth和options.outHeight来获取图片的尺寸
int widthRatio = (int) Math.ceil(options.outWidth / width);//获取宽度的压缩比率
int heightRatio = (int) Math.ceil(options.outHeight / height);//获取高度的压缩比率
if (widthRatio > 1 || heightRatio > 1) {//只要其中一个的比率大于1,说明需要压缩
if(widthRatio>=heightRatio){//取options.inSampleSize为宽高比率中的最大值
options.inSampleSize = widthRatio;
}else{
options.inSampleSize = heightRatio;
}
}
options.inJustDecodeBounds = false;//设置为真正的解码图片
bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码图片
imageView.setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:gravity="center_horizontal">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用系统照相机拍照" android:onClick="click"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
代码:
package uk.ac.essex.camerademo1;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Display;
import android.view.View;
import android.widget.ImageView;
public class Camerademo1Activity extends Activity {
private static final int CAPTURE_PIC = 0;
private ImageView imageView;
private int width;
private int height;
private String imageFilePath;
private Uri imageFileUri;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView) findViewById(R.id.imageView);
init();
}
private void init() {
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
imageFilePath = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory() + "/1.jpg" : null;
imageFileUri = Uri.fromFile(new File(imageFilePath));
}
public void click(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//相机捕捉图片的意图
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);//指定系统相机拍照保存在imageFileUri所指的位置
startActivityForResult(intent, CAPTURE_PIC);//启动系统相机,等待返回
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == CAPTURE_PIC) {
Options options = new Options();
options.inJustDecodeBounds = true;//设置解码只是为了获取图片的width和height值,而不是真正获取图片
Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码后可以options.outWidth和options.outHeight来获取图片的尺寸
int widthRatio = (int) Math.ceil(options.outWidth / width);//获取宽度的压缩比率
int heightRatio = (int) Math.ceil(options.outHeight / height);//获取高度的压缩比率
if (widthRatio > 1 || heightRatio > 1) {//只要其中一个的比率大于1,说明需要压缩
if(widthRatio>=heightRatio){//取options.inSampleSize为宽高比率中的最大值
options.inSampleSize = widthRatio;
}else{
options.inSampleSize = heightRatio;
}
}
options.inJustDecodeBounds = false;//设置为真正的解码图片
bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码图片
imageView.setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
相关文章推荐
- MUI 图片上传剪切预览,可选(拍照+系统相册)
- MUI 单个图片上传预览(拍照+系统相册):先选择->预览->上传提交
- 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览
- 使用intent调用系统照相机拍照
- MUI(拍照+系统相册)图片上传剪切预览
- MUI 单个图片上传预览(拍照+系统相册):先选择->预览->上传提交
- 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑
- Android客户端之“微服私访”App的系统学习(八)调用系统摄像头拍照并管理照片并使用Okhttp上传文件至后台
- 项目上传至服务器;使用linux系统将本地项目上传到服务器上
- Mac系统 使用github上传项目
- 小程序从本地相册选择图片或使用相机拍照wx.chooseImage上传后预览并可以识别图中二维码
- android使用webview上传文件(支持相册和拍照),支持最高6.0安卓系统(改进版)
- 如何调用系统照相机实现类似腾讯微博那个拍照上传的功能
- android 手机拍照上传项目的开发-----Camera1.0(动态显示预览)
- ASP.NET项目中使用CKEditor +CKFinder 实现上传图片
- Mac 系统 使用SourceTree拉取Gitlab项目配置
- 安卓在程序中调用系统照相机拍照后获得图片
- 如何使用IDEA创建java项目并上传到gitosc
- 使用git Bash工具上传网站项目到github
- 关于RCP中使用系统resource navigator图标和项目名称不显示的问题