모든 장치에서 모든 이미지 캡처에 대해 원하는 방향을 얻기 위해 자신의 사진 캡처 작업을 구현해야합니다.
나는 사진을 찍고 사진의 방향을 설정할 수있는 하나의 캡처 활동을 구현했습니다.
구현 : 당신은이 주제에 대한 이미지의 회전에 대한 내 대답을 확인할 수 있습니다 내 대답에 추가 사진 기능을 절약
Camera capture orientation on samsung devices in android
내가 위에서 준 :
savePhoto 기능 :
public void savePhoto(Bitmap bmp) {
imageFileFolder = new File(Environment.getExternalStorageDirectory(),
cc.getDirectoryName());
imageFileFolder.mkdir();
FileOutputStream out = null;
Calendar c = Calendar.getInstance();
String date = fromInt(c.get(Calendar.MONTH))
+ fromInt(c.get(Calendar.DAY_OF_MONTH))
+ fromInt(c.get(Calendar.YEAR))
+ fromInt(c.get(Calendar.HOUR_OF_DAY))
+ fromInt(c.get(Calendar.MINUTE))
+ fromInt(c.get(Calendar.SECOND));
imageFileName = new File(imageFileFolder, date.toString() + ".jpg");
try {
out = new FileOutputStream(imageFileName);
bmp.compress(Bitmap.CompressFormat.JPEG, 70, out);
out.flush();
out.close();
scanPhoto(imageFileName.toString());
out = null;
} catch (Exception e) {
e.printStackTrace();
}
}
scanPhoto 기능 :
public void scanPhoto(final String imageFileName) {
geniusPath = imageFileName;
msConn = new MediaScannerConnection(MyClass.this,
new MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
msConn.scanFile(imageFileName, null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
msConn.disconnect();
}
});
msConn.connect();
}
SavePhotoTask 클래스 :
class SavePhotoTask extends AsyncTask<byte[], String, String> {
@Override
protected String doInBackground(byte[]... jpeg) {
File photo = new File(Environment.getExternalStorageDirectory(),
"photo.jpg");
if (photo.exists()) {
photo.delete();
}
try {
FileOutputStream fos = new FileOutputStream(photo.getPath());
fos.write(jpeg[0]);
fos.close();
} catch (java.io.IOException e) {
}
return (null);
}
}
갤러리로 표준 카메라를 연 이유는 동일한 이미지 미리보기를 캡처 한 방향을 표시 할 수 있습니다. 그리고 원본은 변경되지 않습니다 – mum
캡처 후 회전 이미지가 있다면, 나는 알고있었습니다. 나는 원래의 이미지 (동일한 표준 카메라)를 유지하고 싶습니다. – mum
내 대답은 사진을 찍은 사진을 찍고 사진과 같은 방향으로 저장하고 휴대 전화의 갤러리에서 올바르게 볼 수 있도록하는 것입니다. . –