1
嗨獲取照片,從相機和畫廊
我創建一個簡單的Android應用程序,它允許用戶從任何照片庫中選擇照片或用相機拍攝的。獲得選定的照片後,我將開始另一項活動,以處理照片。不過,我在另一個活動中顯示照片時遇到了一些問題。
這是第一個活動,以達到照片:
public class GetPhoto extends Activity implements OnClickListener {
ImageButton ibPhotoLib;
ImageButton ibCamera;
final static int FROM_CAMERA = 0, FROM_PHOTOLIB = 1;
public static Bitmap bmp;
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.ibCamera:
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, FROM_CAMERA);
break;
case R.id.ibPhotoLib:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(photoPickerIntent, FROM_PHOTOLIB);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case FROM_CAMERA:
Bundle extras = data.getExtras();
bmp = (Bitmap)extras.get("data");
break;
case FROM_PHOTOLIB:
Uri chosenImageUri = data.getData();
try {
bmp = Media.getBitmap(this.getContentResolver(), chosenImageUri);
} catch (Exception e) {
e.printStackTrace();
}
break;
}
Intent intent = new Intent(GetPhoto.this, PhotoProcessing.class);
startActivity(intent);
}
}
}
然後,我開始另一個活動(PhotoProcessing
),並在這個活動,我會首先顯示的照片。如果我使用相機拍攝照片,則會出現問題,它會以我想要的人像模式顯示。但是,如果我從圖庫中選擇一張照片,它總是水平顯示,這真的很煩人。有誰知道如何解決這個問題?
而且還當我嘗試獲得圖像的寬度和高度:
float imageWidth = GetPhoto.bmp.getWidth();
float imageHeight = GetPhoto.bmp.getHeight();
- 如果照片是從相機拍攝的,
imageWidth
=153
,imageHeight
=204
- 如果照片是從畫廊中選擇,
imageWidth
=3264
,imageHeight
=2448
爲同一圖像。
任何人都可以解釋爲什麼這是如此不同?我很困擾。
任何解決方案或建議將不勝感激。謝謝。