相关疑难解决方法(0)

控制相机以纵向拍摄照片不会旋转最终图像

我正在尝试控制Android相机在肖像应用程序中拍照,但是当我保存图片时,它是在风景中.我用setCameraDisplayOrientation()方法将图像旋转了90个等级 ,但是不起作用.

然后我发现这个职位,但TAG_ORIENTATIONIS 0(不确定).如果我捕获此值并应用旋转值,则也不起作用.

我如何拍摄肖像并以良好的方向保存?

    /** Initializes the back/front camera */
private boolean initPhotoCamera() {
    try {
        camera = getCameraInstance(selected_camera);

        Camera.Parameters parameters = camera.getParameters();
   //           parameters.setPreviewSize(width_video, height_video);
   //           parameters.set("orientation", "portrait");
   //           parameters.set("rotation", 1);
   //           camera.setParameters(parameters);


        checkCameraFlash(parameters);

   //            camera.setDisplayOrientation( 0);
        setCameraDisplayOrientation(selected_camera, camera);


        surface_view.getHolder().setFixedSize(width_video, height_video);


        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width_video, height_video);
        surface_view.setLayoutParams(lp);

        camera.lock();

        surface_holder = surface_view.getHolder();
        surface_holder.addCallback(this);
        surface_holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        setPreviewCamera();

    } catch (Exception e) {
        Log.v("RecordVideo", "Could not initialize the Camera");
        return false;
    }
    return true; …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-orientation

57
推荐指数
4
解决办法
5万
查看次数

以纵向模式拍照的setRotation(90)对三星设备不起作用

根据该文件,setRotation(90)应旋转拍摄的JPEG图片(takePicture在横向模式.

这在HTC手机上运行良好,但在三星Google Nexus S和三星Galaxy S3上无效.这是一个错误吗?

我知道我可以使用矩阵变换旋转,但希望操作系统可以更有效地执行此操作,并且不希望在某些其他设备上存在过度旋转的风险.

编辑

设置camera.setDisplayOrientation(90);使预览处于纵向模式,但它对拍摄的照片没有任何影响.

此外,另外setRotation,我也试图设置图片大小-在我翻转hw:parameters.setPictureSize(1200, 1600);.这也没有任何影响.

显然,三星手机设置了EXIF方向标签,而不是旋转单个像素.如ariefbayu建议的那样,使用Bitmap BitmapFactory不支持此标记.他的代码示例是解决方案,此解决方案也与使用兼容inSampleSize.

android android-camera

36
推荐指数
1
解决办法
3万
查看次数

相机:setDisplayOrientation功能不适用于Android 2.3.6的三星Galaxy ACE

我试图创建一个简单的相机应用程序进行研究.我阅读Android Camera Official Document然后开始编码.所以我做了一些步骤让它发挥作用

1.在应用中添加了相机功能所需的权限.

2.我的活动仅限于PORTRAIT模式.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

3.增加了几个相机回调以使我的相机工作.

  • SurfaceHolder.Callback,
  • Camera.PreviewCallback
  • AutoFocusCallback
  • ShutterCallback
  • PictureCallback用于RAW图像数据
  • PictureCallback用于JPG图像数据

4.In surfaceChanged方法,我自定义相机设置.到目前为止,我已经为几乎所有Android设备工作了

  • LG
  • 香料
  • 三星
  • HTC
  • 福邦
  • 索尼
  • 摩托罗拉
  • 谷歌Nexus系列.

随后我在Android版2.3.6的三星Galaxy ACE上进行了测试,发现Camera Display Preview已转为横向模式.

因此,在记录了log-cat/break点后,我发现下面的方法对于这个特定的模型不起作用

//This method is not working for Samsung Galaxy ACE
 camera.setDisplayOrientation(90); 
//or 
parameters.set("orientation", "portrait");
//or
parameters.setRotation(90);
Run Code Online (Sandbox Code Playgroud)

注意: 我在Google和SO上搜索了大量解决方案,但到目前为止还没有任何运气

供您参考我的示例代码如下

@Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
        Log.v(TAG, "surfaceChanged get called"); …
Run Code Online (Sandbox Code Playgroud)

camera android portrait android-camera samsung-mobile

20
推荐指数
1
解决办法
2万
查看次数