public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button camera;
private Button camera1;
private Button photo;
private ImageView cameraImage;
private Button clipping;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
//第一步:找到所有的按鈕和圖片控件 ,按鈕設置點擊事件
private void initView() {
//初始化控件
camera1 = findViewById(R.id.camera);
photo = findViewById(R.id.photo);
clipping = findViewById(R.id.clipping);
cameraImage = findViewById(R.id.cameraImage);
//點擊事件
camera1.setOnClickListener(this);
photo.setOnClickListener(this);
clipping.setOnClickListener(this);
cameraImage.setOnClickListener(this);
}
//第二步:設置權(quán)限AndroidManifest.xml
//第三步:判斷點擊了那個按鈕
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.camera:
//第四步[1]獲取相機
//[1] 相機的隱式回傳
Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//[2]添加意圖(android.intent.category.DEFAULT)
intent1.addCategory(Intent.CATEGORY_DEFAULT);
//[3]回傳 (注意:請求碼要和判斷的一樣)
startActivityForResult(intent1, 0);
break;
case R.id.photo:
//第六步:獲取相冊的圖片
//[1]設置相冊的意圖(權(quán)限)
Intent intent2 = new Intent(Intent.ACTION_PICK);
//[2]設置顯式MIME數(shù)據(jù)類型
intent2.setType("image/*");
//[3]跳轉(zhuǎn)回傳
startActivityForResult(intent2, 1);
break;
case R.id.clipping:
//第七步:獲取相機圖片進行裁剪
//獲取相機
// [1]設置相冊的意圖(權(quán)限)
Intent intent3 = new Intent(Intent.ACTION_PICK);
// [2]設置顯式MIME數(shù)據(jù)類型
intent3.setType("image/*");
//[3]跳轉(zhuǎn)回傳
startActivityForResult(intent3, 2);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//第五步:獲取回傳值
switch (requestCode) {
case 0:
//得到拍攝圖片
Bitmap bitmap = data.getParcelableExtra("data");
//設置給imageView(這個時候就完成了 獲取拍照圖片)
cameraImage.setImageBitmap(bitmap);
break;
case 1:
//[1]得到圖片路徑
Uri uri1 = data.getData();
//[2]設置圖片(相冊獲取圖片完畢)
cameraImage.setImageURI(uri1);
break;
case 2:
//獲取相測 圖片裁剪
//[1]從返回值中直接獲取路徑
Uri uri2 = data.getData();
//[2]調(diào)用裁剪的方法
Intent crp= crop(uri2);
//[3]再次回傳
startActivityForResult(crp, 3);
break;
case 3:
//[1]獲取bitmap
Bitmap bmp = (Bitmap) data.getExtras().get("data");
//[2](設置圖片)
cameraImage.setImageBitmap(bmp);
break;
}
}
private Intent crop(Uri uri2) {
/*
* 裁剪需要的東西
* 1.圖片
* 2.裁剪框的大小 裁剪完后圖片大衅尬丁(我要裁成什么樣子的巡验?其實就是 裁剪完的大卸龇巍)
* 3.圖片格式
* 4.得到裁剪完的圖片
* */
// 裁剪圖片意圖
Intent intent = new Intent("com.android.camera.action.CROP");
//設置裁剪的數(shù)據(jù)源和數(shù)據(jù)類型
intent.setDataAndType(uri2, "image/*");
//可裁剪
intent.putExtra("crop", "true");
//裁剪框的比例,1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//裁剪后輸出圖片的尺寸大羞蠛怼(圖片展示到imageView的大小,不要太大了,不然會出錯)
//參數(shù)(1.輸出的大小,大械簟)
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
// 圖片格式(參數(shù):輸出格式,格式)
intent.putExtra("outputFormat", "JPEG");
// 必須加,否則返回值中找不到返回的值
intent.putExtra("return-data", true);// 若為true則表示返回數(shù)據(jù)(圖片)
return intent;
}
}
相機
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門幻碱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人细溅,你說我怎么就攤上這事褥傍。” “怎么了喇聊?”我有些...
- 文/不壞的土叔 我叫張陵恍风,是天一觀的道長。 經(jīng)常有香客問我,道長朋贬,這世上最難降的妖魔是什么凯楔? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮锦募,結(jié)果婚禮上摆屯,老公的妹妹穿的比我還像新娘。我一直安慰自己糠亩,他們只是感情好虐骑,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赎线,像睡著了一般廷没。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氛驮,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼律杠!你這毒婦竟也來了潭流?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布册赛,位于F島的核電站钠导,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏击奶。R本人自食惡果不足惜辈双,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柜砾。 院中可真熱鬧湃望,春花似錦、人聲如沸痰驱。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽担映。三九已至废士,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝇完,已是汗流浹背官硝。 一陣腳步聲響...