在Stack Overflow中搜索了所有相关问题但没有找到任何内容后,请尽量帮助我.
我创建了捕获图片的意图.然后我看到了不同的行为onActivityResult():如果我没有在Intent中添加任何额外的内容(对于小图片)onActivityResult中的Intent是可以的,但是当我在将pic写入文件的意图中添加额外内容时,onActivityResult中的意图是null!
意图创作:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// without the following line the intent is ok
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(takePictureIntent, actionCode);
Run Code Online (Sandbox Code Playgroud)
为什么它为空,我该如何解决?
我看了一下,但似乎没有一个坚实的答案/解决方案,非常恼人的问题.
我以纵向拍摄照片,当我点击保存/放弃时,按钮的方向也正确.问题是,当我稍后检索图像时,它是横向的(图片已逆时针旋转90度)
我不想强迫用户以特定方向使用相机.
有没有办法可以检测照片是以纵向模式拍摄,然后解码位图并以正确的方式翻转它?
我有一个问题.当我试图从相机拍摄照片时,质量非常低.首先,使用相机拍摄图片,而不是保存到目录,同时获取该图片并在我的应用程序中显示.目录中保存的图片质量很好但是当我从目录中获取时,质量很低.下面是我的示例代码:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == CAMERA_PIC_REQUEST) {
Bitmap thumbnail = (Bitmap) intent.getExtras().get("data");
if (g==1)
{
ImageView myImage = (ImageView) findViewById(R.id.img5);
myImage.setImageBitmap(thumbnail);
View a = findViewById(R.id.img5);
a.setVisibility(View.VISIBLE);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byteArray1 = stream.toByteArray();
}
}
Run Code Online (Sandbox Code Playgroud)
任何解决方案/建议?谢谢 :)
解决了
当我按照下面的Antrromet给出的代码时,问题就解决了
我在捕获图像并将其存储在本机相机应用程序时遇到问题.以下是我的一些代码示例.
_path = Environment.getExternalStorageDirectory() + "make_machine_example.jpg";
File file = new File( _path );
Uri outputFileUri = Uri.fromFile( file );
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, 0 );
Run Code Online (Sandbox Code Playgroud)
拍完照片后我又回到原来的活动中,当我通过Android DDMS文件浏览器导航到我的SD卡时,图片不存在.任何人都知道为什么没有得救?
camera android android-intent android-camera android-camera-intent
我试图用意图拍照.我的问题是,有时在拍照后我的活动(调用startActivityForResult)似乎被破坏,以便再次调用onCreate.
这是我点击图片浏览后拍照的代码,应替换哪个图片:
if (!getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA)) {
Util.makeLongToast(R.string.lang_no_camera);
} else {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_ITEM_PHOTO);
}
Run Code Online (Sandbox Code Playgroud)
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.v(TAG, "onactivityresult called");
if (requestCode == TAKE_ITEM_PHOTO) {
if (data != null) {
imageUri = data.getData();
try {
img_photo.setImageBitmap(Media.getBitmap(
getContentResolver(), imageUri));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else
Log.w(TAG, "data is null");
} …Run Code Online (Sandbox Code Playgroud) android android-camera android-camera-intent android-activity
我真的很沮丧地解决了我的问题,我有一个使用相机的应用程序,当相机拍摄照片时,它会显示在活动上,当我不使用cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);照片时会显示活动,但名称和路径文件不是喜欢我想要的.我正在使用galaxy选项卡进行编译,我已经按照教程从这里解决了我的问题,这里和这里但我的应用程序仍然强制关闭和错误,这是我的代码:
{
File sdCard= Environment.getExternalStorageDirectory();
File path = new File (sdCard.getAbsolutePath() + "/android/data/spaj_foto");
path.mkdir();
File file= new File (path,"spaj_foto.png");
String filePath ="/android/data/spaj_foto/spaj_foto.png";
try {
file.createNewFile();
} catch (IOException e) {}
mPhotoUri = Uri.fromFile(file);
values.put( MediaStore.Images.ImageColumns.DATA, file.getPath());
mPhotoUri=getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);
startActivityForResult(cameraIntent,TAKE_PHOTO_CODE );
}
Run Code Online (Sandbox Code Playgroud)
activityresult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
Bitmap photo = …Run Code Online (Sandbox Code Playgroud) 我想使用android camera api以低分辨率捕获图像,但是当我捕获图像时,它将采用设备相机的默认分辨率.所以我想在捕获时捕获低分辨率或小尺寸的图像,或者如何将大图像压缩成android中的小尺寸?
android image-compression android-camera android-camera-intent
嗨我ACTION_IMAGE_CAPTURE用于捕获图像使用Intent如下:
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(
MediaStore.EXTRA_OUTPUT, (new File(Environment.getExternalStorageDirectory(),
String.valueOf(System.currentTimeMillis()) + ".jpg"))
);
startActivityForResult(cameraIntent, 0);
Run Code Online (Sandbox Code Playgroud)
我需要将图像存储在SD卡中,并使用该onActivityResult方法检索该图像的路径.我不知道如何获取当前捕获图像的图像路径.
如果有人知道请帮助.
谢谢
设备:模拟器像素 3a - Android 11
代码:
final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
final List<ResolveInfo> listCam =
context.getPackageManager().queryIntentActivities(captureIntent, 0);
Run Code Online (Sandbox Code Playgroud)
使用时:
targetSdkVersion 30
compileSdkVersion 30
Run Code Online (Sandbox Code Playgroud)
listCam 大小为 0
当更改为:
compileSdkVersion 29
Run Code Online (Sandbox Code Playgroud)
listCam 大小为 1 - 应该如此。
使用以下代码:
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
baseActivity.startActivity(captureIntent)
Run Code Online (Sandbox Code Playgroud)
工作正常并显示相机应用程序。
知道为什么 queryIntentActivities 不返回相机意图吗?
谢谢!
android android-intent android-camera android-camera-intent android-intent-chooser
我的要求是将摄像头捕获的图像上传到服务器,但它应该小于500 KB.如果它大于500 KB,则需要将其减小到小于500 KB的大小(但稍微接近它)
为此,我使用以下代码 -
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == getActivity().RESULT_OK) {
if (requestCode == REQUEST_CODE_CAMERA) {
try {
photo = MediaStore.Images.Media.getBitmap(
ctx.getContentResolver(), capturedImageUri);
String selectedImagePath = getRealPathFromURI(capturedImageUri);
img_file = new File(selectedImagePath);
Log.d("img_file_size", "file size in KBs (initially): " + (img_file.length()/1000));
if(CommonUtilities.isImageFileSizeGreaterThan500KB(img_file)) {
photo = CommonUtilities.getResizedBitmapLessThan500KB(photo, 500);
}
photo = CommonUtilities.getCorrectBitmap(photo, selectedImagePath);
// // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
img_file …Run Code Online (Sandbox Code Playgroud) android image filesize android-camera-intent onactivityresult