gpt4 book ai didi

android - 从相机和画廊获取照片

转载 作者:行者123 更新时间:2023-11-30 03:45:27 25 4
gpt4 key购买 nike

你好,

我正在创建一个简单的 Android 应用程序,它允许用户从照片库中选择照片或使用相机拍摄照片。获得选定的照片后,我将开始另一个 Activity 来对照片做一些事情。但是我在另一个 Activity 中显示照片时遇到了一些问题。

这是获取照片的第一个 Activity :

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);
}
}
}

然后我开始另一个 Activity (PhotoProcessing),在这个 Activity 中我将首先显示照片。如果我使用相机拍照,问题就来了,它以我想要的纵向模式显示。但是,如果我从图库中选择一张照片,它总是水平显示,这真的很烦人。有谁知道如何解决这个问题?

还有当我尝试获取图像的宽度和高度时:

float imageWidth = GetPhoto.bmp.getWidth();
float imageHeight = GetPhoto.bmp.getHeight();
  • 如果照片是从相机拍摄的,imageWidth = 153imageHeight = 204
  • 如果照片是从图库中选择的,imageWidth = 3264imageHeight = 2448

对于同一张图片。

谁能解释一下为什么会如此不同?我很困惑。

任何解决方案或建议将不胜感激。谢谢。

最佳答案

从相机 Intent 传回的位图是缩略图。更糟糕的是,我认为某些制造商的相机实现不会返回任何内容。

您需要为相机 Intent 提供一个文件,然后在 onActivityResult 方法中从文件中获取图像数据。

查看 Taking Photos Simply实现细节指南。

关于android - 从相机和画廊获取照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com