사진을 찍고 서버로 전송하는데
제가 가져온 코드는 외부저장소에 저장을 한뒤 서버로 보내는겁니다.
근데 서버에 이미지가 저장되는데 굳이 외부저장소에 저장할 필요가 없습니다.
그런데 코드를 건드리려고 하니까 외부저장소에 저장해야지만 보낼 수 있더라구요.
이게 원래그런건가요? 아니면 외부저장소에 저장하지않고 바로 보낼 수 있나요?
아래는 일부 코드입니다.
private String mCurrentPhotoPath="";
String mImageCaptureName="";
//사진가져오기
private void selectPhoto() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException e) {
e.printStackTrace();
}
if (photoFile != null) {
photoUri = FileProvider.getUriForFile(this, getPackageName(), photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent,101);
}
}
}
}
private File createImageFile() throws IOException{
File dir=new File(Environment.getExternalStorageDirectory()+"/path/");
if(!dir.exists())
{
dir.mkdirs();
}
String timeStamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
mImageCaptureName=timeStamp+".jpg";
File storageDir=new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+"/path/"+mImageCaptureName);
mCurrentPhotoPath=storageDir.getAbsolutePath();
return storageDir;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==Activity.RESULT_OK) {
if (requestCode == 101) //사진찍기
{
getPicturePhoto();
}
else if(requestCode==102) //갤러리
{
sendPicture(data.getData());
}
}
}
//카메라
private void getPicturePhoto()
{
Bitmap bitmap= BitmapFactory.decodeFile(mCurrentPhotoPath);
int height=bitmap.getHeight();
int width=bitmap.getWidth();
//숫자부분을 수정해 원하는 크기로 변경가능
bitmap=Bitmap.createScaledBitmap(bitmap,width/10,height/10,true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] array= stream.toByteArray();
encoded_string = Base64.encodeToString(array, 0);
ExifInterface exif=null;
try{
exif=new ExifInterface(mCurrentPhotoPath);
}catch(IOException e)
{
e.printStackTrace();
}
int exifOrientation;
int exifDegree;
if(exif!=null)
{
exifOrientation=exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
exifDegree=exifOrientationToDegrees(exifOrientation);
}else
{
exifDegree=0;
}
imageView.setImageBitmap(photoRotate(bitmap,exifDegree));
}