Android 호출 시스템 사진 편집 모호 한 해결 방법
4728 단어 Android사진 을 찍다그림 이 흐릿 하 다
우선,호출 시스템 의 재단 은 Intent intent=new Intent("com.android.camera.action.crop")를 통 해 이 루어 진 다 는 것 을 알 고 있 습 니 다.
그러나 intent 는 도대체 어떤 데 이 터 를 휴대 할 수 있 습 니까?어떤 의미 가 있 습 니까?우 리 는 다음 과 같이 볼 수 있 습 니 다.
위 에는 선택 할 수 있 는 모든 조작 이 포함 되 어 있 으 며,그 중 에는 매우 중요 한 매개 변수 가 있다.
intent.putExtra("return-data",true):재단 후 되 돌아 오 는 데 이 터 를 Bitmap 로 표시 합 니 다.메모리 에 있 는 미리 보기 그림 으로 효과 가 모호 합 니 다.가 져 오 는 방법 은'Activity 의 onActivity Result 방법'입 니 다.
Bundle bundle = data.getExtras();
Bitmap bitmap = bundle.getParcelable("data");
재단 한 원본 그림 을 가 져 오기 위해 서 저 희 는 잘 린 그림 을 로 컬 에 저장 한 다음 로 컬 그림 을 호출 하여 Bitmap 로 직접 돌아 가지 않 습 니 다.
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
아래 코드 는 사진 찍 기/잘라 서 표시 합 니 다.
public static int TAKE_PHOTO_REQUEST_CODE = 1; //
public static int PHOTO_REQUEST_CUT = 2; //
public static int PHOTO_REQUEST_GALLERY = 3; //
public Uri imageUri;
/**
*
*/
private void takePhotos() {
imageUri = Uri.fromFile(getImageStoragePath(this));
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent,TAKE_PHOTO_REQUEST_CODE);
}
/**
*
*/
private void choicePicFromAlbum() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
}
/**
*
* @return
*/
private File getImageStoragePath(Context context){
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),"temp.jpg");
return file;
}
return null;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO_REQUEST_CODE){
if (imageUri != null){
startPhotoZoom(imageUri);
}
}else if (requestCode == PHOTO_REQUEST_CUT){
if (imageUri != null) {
Bitmap bitmap = decodeUriBitmap(imageUri);
imageView.setImageBitmap(bitmap);
}
}else if (requestCode == PHOTO_REQUEST_GALLERY){
if (data != null) {
imageUri = data.getData();
Bitmap bitmap = decodeUriBitmap(imageUri);
imageView.setImageBitmap(bitmap);
}
}
}
private Bitmap decodeUriBitmap(Uri uri) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
return bitmap;
}
/**
*
*
* @param uri
*/
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// crop true intent view
intent.putExtra("crop", "true");
intent.putExtra("scale", true);
// aspectX aspectY
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX,outputY
intent.putExtra("outputX", 800);
intent.putExtra("outputY", 800);
// true bitmap,
intent.putExtra("return-data", false);
//
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
//
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//
intent.putExtra("noFaceDetection", true);
startActivityForResult(intent, PHOTO_REQUEST_CUT);
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.