Android,사진 및 이미지 표시 효과 구현
1.기능 설명
카메라,NFC 등 외부 설정 을 사용 해 야 할 때 AndroidManifest.xml 에서 설명 해 야 합 니 다.
이렇게 하면 장치 가 이러한 외부 장치 가 부족 할 때 응용 상점 의 설치 프로그램 은 설 치 를 거부 할 수 있다.
설명 예제 코드 는 다음 과 같 습 니 다.
<uses-feature android:name="android.hardware.camera2"
<!-- required false , -->
<!-- , camera, -->
android:required="false"/>
2.파일 을 가리 키 는 File 대상 만 들 기촬영 한 사진 은 장치 의 외부 저장 소 에 저장 할 수 있다.
Android 는 서로 다른 응용 프로그램 에 분 배 된 독특한 저장 영역 과 함께 데 이 터 를 저장 하 는 유형 에 따라 저장 영역 을 진일보 로 구분 했다.
사진 저장 영역 을 설정 하 는 코드 예 시 는 다음 과 같 습 니 다.
public File getPhotoFile(Crime crime) {
//
File externalFilesDir = mContext
.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
if (externalFilesDir == null) {
return null;
}
// File
return new File(externalFilesDir, crime.getPhotoFilename());
}
.............
// crime
public String getPhotoFilename() {
return "IMG_" + getId().toString() + ".jpg";
}
3.촉발 촬영MediaStore.ACTION 사용 가능CAPTURE_IMAGE 형식의 Intent 트리거 사진,예제 코드 는 다음 과 같 습 니 다.
mPhotoButton = (ImageButton) v.findViewById(R.id.crime_camera);
// Intent
final Intent captureImageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//mPhotoFile File
// Intent
boolean canTakePhoto = mPhotoFile != null
&& captureImageIntent.resolveActivity(packageManager) != null;
mPhotoButton.setEnabled(canTakePhoto);
if (canTakePhoto) {
// File Uri
Uri uri = Uri.fromFile(mPhotoFile);
// Uri Intent , Uri File
captureImageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
}
mPhotoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(captureImageIntent, REQUEST_PHOTO);
}
});
4.사진 처리 결과사진 이 완성 되면 사진 을 불 러 올 수 있 습 니 다.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
.........
} else if (requestCode == REQUEST_PHOTO) {
updatePhotoView();
}
.........
}
private void updatePhotoView() {
if (mPhotoFile == null || !mPhotoFile.exists()) {
mPhotoView.setImageDrawable(null);
} else {
//
Bitmap bitmap = PictureUtils.getScaledBitmap(mPhotoFile.getPath(), getActivity());
mPhotoView.setImageBitmap(bitmap);
}
}
비트 맵 은 실제 픽 셀 데이터 만 저장 하기 때문에 원본 사진 이 압축 되 었 더 라 도 비트 맵 대상 에 저장 할 때 파일 이 압축 되 지 않 습 니 다.따라서 그림 을 불 러 올 때 주어진 영역의 크기 에 따라 파일 을 합 리 적 으로 크기 조정 해 야 합 니 다.그리고 비트 맵 으로 크기 조정 한 파일 을 불 러 옵 니 다.예제 코드 는 다음 과 같 습 니 다.
// ,
// ,
public static Bitmap getScaledBitmap(String path, Activity activity) {
Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getSize(size);
return getScaledBitmap(path, size.x, size.y);
}
public static Bitmap getScaledBitmap(String path, int destWidth, int destHeight) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//
BitmapFactory.decodeFile(path, options);
//
float srcWidth = options.outWidth;
float srcHeight = options.outHeight;
//inSampleSize /
// ,inSampleSize 2 , , 2 1
// , 1/4
int inSampleSize = 1;
if (srcHeight > destHeight || srcWidth > destWidth) {
if (srcWidth > srcHeight) {
inSampleSize = Math.round(srcHeight / destHeight);
} else {
inSampleSize = Math.round(srcWidth / destWidth);
}
}
options = new BitmapFactory.Options();
options.inSampleSize = inSampleSize;
// ,
return BitmapFactory.decodeFile(path, options);
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.