照相机捕获照片保存大小以及保存位置的问题

照相机捕获照片保存大小以及保存位置的问题

照相机捕获照片保存大小以及保存位置的问题 原创

mb649166f4c151e 2023-06-21 08:40:38 博主文章分类:android ©著作权

文章标签 Android OS Google android ide 文章分类 HarmonyOS 后端开发

©著作权归作者所有:来自51CTO博客作者mb649166f4c151e的原创作品,请联系作者获取转载授权,否则将追究法律责任

1.有时候拍照的图片比实际的要小

这可能和版本有管

不过在2.0上以上 可以没问题

在1.6一下即使你用hw.camera.maxHorizontalPixels 和 hw.camera.maxVerticalPixels. 都会得到原大小的1/4

 

Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File out = new File(Environment.getExternalStorageDirectory(), "camera.jpg");Uri uri = Uri.fromFile(out);imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);

上述没有问题

上面的存入制定目录。存入存放图片的地方

 

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS"); String filename = timeStampFormat.format(new Date()); ContentValues values = new ContentValues(); values.put(Media.TITLE, filename); values.put(Media.DESCRIPTION, "Image from Android Emulator"); photoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); startActivityForResult(inttPhoto, 0);

2 然后相关处理就是

private void saveFullImage() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environment.getExternalStorageDirectory(), "test.jpg"); outputFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, TAKE_PICTURE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) { // Check if the result includes a thumbnail Bitmap if (data == null) { // TODO Do something with the full image stored // in outputFileUri. Perhaps copying it to the app folder } } }

3. 一个可以兼容的处理方法:

 

public boolean hasImageCaptureBug() { // list of known devices that have the bug ArrayList devices = new ArrayList(); devices.add("android-devphone1/dream_devphone/dream"); devices.add("generic/sdk/generic"); devices.add("vodafone/vfpioneer/sapphire"); devices.add("tmobile/kila/dream"); devices.add("verizon/voles/sholes"); devices.add("google_ion/google_ion/sapphire"); return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/" + android.os.Build.DEVICE); } Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); if (hasImageCaptureBug()) { i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/tmp"))); } else { i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); } startActivityForResult(i, mRequestCode); protected void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case GlobalConstants.IMAGE_CAPTURE: Uri u; if (hasImageCaptureBug()) { File fi = new File("/sdcard/tmp"); try { u = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null)); if (!fi.delete()) { Log.i(t, "Failed to delete " + fi); } } catch (FileNotFoundException e) { e.printStackTrace(); } } else { = intent.getData(); } } u

第三种方法虽然可以解决版本问题

对存在bug的版本 得到的大小也只有512宽 版本正常的 可以得到想要大小

还有一个缺点 可能版本的bug被修正 那样你的bug函数就需要修改

 

 

赞 收藏 评论 分享 举报


比丘资源网 » 照相机捕获照片保存大小以及保存位置的问题

发表回复

提供最优质的资源集合

立即查看 了解详情