Android CameraSource 对多个设备的工作方式不同,并且不会旋转图像
Posted
技术标签:
【中文标题】Android CameraSource 对多个设备的工作方式不同,并且不会旋转图像【英文标题】:Android CameraSource works differently for multiple devices and doesn't rotate image 【发布时间】:2016-07-23 06:33:26 【问题描述】:我有两个安卓设备。 CameraSource 对它们的工作方式不同。 对于一台设备,照片的方向是正确的,保存后无需旋转。但是对于另一台设备,以错误的方向保存了照片。
我已经创建了 CameraSource:
source = new CameraSource.Builder(context, detector)
.setRequestedPreviewSize(640, 480)
.setFacing(cameraId)
.setRequestedFps(30.0f)
.setAutoFocusEnabled(true)
.build();
我已经创建了带有动作的按钮:
source.takePicture(null, new CameraSource.PictureCallback()
@Override
public void onPictureTaken(byte[] bytes)
File folder = PhotoUtils.getGalleryFolder();
writeFileIntoDevice(bytes, folder.getAbsolutePath());
);
private String writeFileIntoDevice(byte[] data, String path)
Bitmap orignalImage = BitmapFactory.decodeByteArray(data, 0, data.length);
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd_hhmmss");
String fileName = formatter.format(new Date());
File file = new File(path, fileName + ".jpg");
try (FileOutputStream stream = new FileOutputStream(file))
orignalImage.compress(Bitmap.CompressFormat.JPEG, 80, stream);
Log.i(PhotoCreator.class.getName(), "photo was saved to " + path);
catch (Exception e)
Log.e(PhotoCreator.class.getName(), "can't save photo", e);
return file.getAbsolutePath();
设备上的照片方向不同,我尝试在保存后旋转位图但没有成功。
我试过这个:Controlling the camera to take pictures in portrait doesn't rotate the final images
还有这个:android camera resulted image should be rotated after the capture?
如何为所有设备正确旋转图像?
【问题讨论】:
【参考方案1】:使用两种不同的设备,我得到两种不同的结果。我刚刚启动相机。使用一台设备,我可以正确获得视频预览,使用另一台设备,我可以获得顺时针旋转 90 度的视频预览。我的应用在 Android 平板电脑上是横向的。
我没有找到解决此相机旋转问题的任何解决方案。
cameraView = (SurfaceView)findViewById(R.id.cameraView);
barcodeDetector = new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.QR_CODE)
.build();
cameraSource = new CameraSource
.Builder(this, barcodeDetector)
.setAutoFocusEnabled(true)
.setRequestedFps(60)
.setRequestedPreviewSize(640, 480)
.setFacing(CameraSource.CAMERA_FACING_FRONT)
.build();
cameraSource.start(holder);
【讨论】:
@КонстантинКачур 我们可以在 CameraSource 中设置方向吗?以上是关于Android CameraSource 对多个设备的工作方式不同,并且不会旋转图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在android studio中修复CameraSource预览方向
从com.google.android.gms.vision.CameraSource访问相机并增加/减少预览亮度
如何在适用于 Android 的 Google API 的 CameraSource 中保存带有叠加层的图像?