Android开发 调用系统相机和加载图片到本地的使用
/**
*hhl
*
*/
public class TakePhotoActivity extends Activity{
private ImageView mImageView;
private TextView mTakePhoto,mRealPath,mCompressPath;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_take_photo);
initView();
}
/**
* 初始化view
*/
private void initView(){
mImageView=(ImageView)findViewById(R.id.iv_take_photo);
mTakePhoto=(TextView)findViewById(R.id.tv_take_photo);
mRealPath=(TextView)findViewById(R.id.tv_realpath);
mCompressPath=(TextView)findViewById(R.id.tv_compresspaath);
mTakePhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//打开相机
//先验证一下手机是否有sdcard
//获取外部存储状态
String status=Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {//sd卡可用
try {
File dir=new File(Environment.getExternalStorageDirectory()+"/"+"Image/");
if (!dir.exists()) {
//新建一个文件夹
dir.mkdirs();
}
//跳转到系统相机
Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File f=new File(dir,"a.jpg");
//根据文件获取到uri
Uri u=Uri.fromFile(f);
intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
startActivityForResult(intent, 101);
} catch (ActivityNotFoundException e) {
Toast.makeText(TakePhotoActivity.this, "没有找到存储目录", Toast.LENGTH_SHORT);
e.printStackTrace();
}
}else{
Toast.makeText(TakePhotoActivity.this, "SD卡不可用", Toast.LENGTH_SHORT);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 101:
//获取拍完的照片的真是路径
File f=new File(Environment.getExternalStorageDirectory()
+"/"+"Image"+"/"+"a.jpg");
try {
//获取到图片的uri
Uri u=Uri.parse(android.provider.MediaStore.
Images.Media.insertImage(getContentResolver(),
f.getAbsolutePath(), null, null));
//通过uri获取到图片的真实路径
String path=getRealPathFromURI(u);
//把真实路径显示在textview上边
mRealPath.setText(path);
//压缩图片
Bitmap bitmap2=BitmapCompressor.getImage(path);
//返回压缩后的图片的路径
String path2=BitmapCompressor.bitmap2File(bitmap2);
mCompressPath.setText(path2);
//picasso加载本地图片到imageview
Picasso.with(this).load(new File(path2))
.resize(600, 800)//图片尺寸
.centerCrop()//填充类型
.placeholder(R.drawable.logo)//默认图片
.error(R.drawable.logo)//加载出现错误时的默认图片
.into(mImageView);//把图片显示在imageview
} catch (FileNotFoundException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
/**
* 从Uri获取到图片的真实路径
* @param contentUri
* @return
*/
public String getRealPathFromURI(Uri contentUri){
String res=null;
String[] proj={MediaStore.Images.Media.DATA};
Cursor cursor=getContentResolver().query(
contentUri, proj, null, null, null);
if (cursor.moveToFirst()) {
int column_index=cursor.getColumnIndexOrThrow(
MediaStore.Images.Media.DATA);
res=cursor.getString(column_index);
}
cursor.close();
return res;
}
}
以下是xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EDEDED"
android:orientation="vertical" >
<!-- 显示选择的照片 -->
<ImageView
android:id="@+id/iv_take_photo"
android:layout_width="300dp"
android:layout_height="400dp"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/logo"/>
<!-- 打开相机的按钮 -->
<TextView
android:id="@+id/tv_take_photo"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_margin="20dp"
android:background="@color/orange"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="拍照"
/>
<TextView
android:id="@+id/tv_realpath"
android:layout_width="300dp"
android:layout_height="50dp"
android:background="@color/white"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="照片真实路径"
4000
/>
<TextView
android:id="@+id/tv_compresspaath"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_margin="5dp"
android:background="@color/white"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="压缩后的路径"
/>
</LinearLayout>
- Android开发基础 调用相机 系统相册(并对图片进行压缩处理)
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
- android开发 友盟推送点击Notification使用WebView加载url同时会调用系统浏览器的问题
- Android 调用系统相机进行拍照 使用自带的图片选择器和裁剪工具
- Android开发之调用相机拍照与本地图库选择图片
- android开发中调用系统的相机和图库及图片的后期处理
- Android 调用相机以及调用系统图片软件浏览图片
- Android 调用系统相机、图库 ,取图片并裁剪、保存sd卡
- [转]Android通过NDK调用JNI,使用opencv做本地c++代码开发配置方法
- android 使用本机相机照相或用本地相册更新imageview里面的图片
- ios 调用系统相机,图库,相册。将照片保存在相册,保存图片在本地,UIImagePickerController
- Android开发学习之调用系统相机完成拍照的实现
- Android开发 调用系统相机出现的问题
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- Android调用相机拍照并返回路径和调用系统图库选择图片
- android获取gallery中的图片以及调用系统相机
- android 开发 - 网络图片加载库 Fresco 的使用。
- Android 调用本地相机拍照并上传图片
- android调用系统相机拍照并保存在本地