当前位置: 首页 > 知识库问答 >
问题:

仅限肖像图片

壤驷骁
2023-03-14

我有一个定制的摄像头活动,应该只在纵向模式下拍照,但是在三星设备上,照片总是在我的nexus设备上以横向模式显示,图片在纵向模式下正确显示。下面是我设置相机参数和方向的方法。此初始化预览在SurfaceHolder中调用。回调表面更改方法。

 /** INITIALIZE THE PREVIEW PARAMTERS */
 private void initPreview(int width, int height) {
    if ( mCamera != null && previewHolder.getSurface() != null) {
        try {
            mCamera.setPreviewDisplay( previewHolder );
        }
        catch (Throwable t) {
            Log.e("PreviewDemo-surfaceCallback", "Exception in setPreviewDisplay()", t);
            Crouton.makeText( this, t.getMessage(), Style.ALERT ).show();
        }

        if (!cameraConfigured) {
            Camera.Parameters parameters = mCamera.getParameters();
            Camera.Size size = getBestPreviewSize(width, height, parameters);
            Camera.Size pictureSize = getSmallestPictureSize(parameters);

            if (size != null && pictureSize != null) {
                parameters.setPreviewSize( size.width, size.height );
                parameters.setPictureSize( pictureSize.width, pictureSize.height );
                parameters.setPictureFormat( ImageFormat.JPEG);

                parameters.set( "orientation", "portrait" );
                parameters.setRotation( 90 );
                mCamera.setDisplayOrientation( 90 );
                mCamera.setParameters( parameters );
                cameraConfigured = true;
            }
        }
    }
}

共有1个答案

糜雪峰
2023-03-14

出身背景

三星在这方面有缺陷。你可以试试这个。。。

获取定位,以将照片URL与存在问题的三星隔离开来。。。

public static int getOrientation(Context context, Uri photoUri) {
    /* it's on the external media. */
    Cursor cursor = context.getContentResolver().query(photoUri,
            new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null);

    if (cursor.getCount() != 1) {
        return -1;
    }

    cursor.moveToFirst();
    return cursor.getInt(0);
}

一旦你确定了,做一个位图旋转来纠正三星的问题。。。

                            if( getOrientation(ctx, photoUrl) == 0 ||  getOrientation(ctx, photoUrl) == -1){
                                //not samsung issue so process as normal;
                            }else{  // bad samsung needs rotation

                                Bitmap lbit =   
                                BitmapFactory.decodeStream(
                                        getContentResolver().openInputStream(_photo_uri),null,options);

                                lbit = lbit.copy(Bitmap.Config.ARGB_8888, true);
                                Matrix matrix = new Matrix();
                                matrix.postRotate(intReturnFromGetOrientationCall);
                                lbit = Bitmap.createBitmap(lbit, 0, 0, lbit.getWidth(),
                                        lbit.getHeight(), matrix, true);
                                Picture.setBmp(lbit);
                            }
 类似资料:
  • 我有一个iPhone应用程序,它使用一个UINavigationController来呈现一个深入的界面:首先是一个视图,然后是另一个视图,最多四层。我希望前三个视图限制为纵向,并且只允许最后一个视图旋转为横向。当从第四个视图返回到第三个视图时,第四个视图是横向的,我希望所有的东西都旋转回纵向。 在iOS5中,我简单地在我的每个视图控制器中定义了以返回YES作为允许的方向。一切都如上所述工作,包括

  • 我的应用程序中有3个媒体查询断点 (最小宽度:1024px)//适用于台式机 (最大宽度:1023px)和(方向:纵向)//用于移动纵向 (最大宽度:1023px)和(方向:横向)//用于移动横向 根据断点,我将更改对应于设备和方向的图像源 对于桌面设备,图像的宽度和高度为346x251。 现在,我需要对移动肖像和风景的图像进行切片。移动肖像和移动景观的理想尺寸是多少

  • 我已经将我的图像文件转换为灰度,然后对其进行模糊处理并使用canny,结果是uint8,但我仍然得到了错误。请帮忙!

  • 我正在使用MPAndroidChart(https://github.com/PhilJay/MPAndroidChart)库来绘制一个简单的折线图,其中我有一条由图标表示的点(值)连接的线。 我正在使用OnChartValueSelectedListener: 但就我而言,无论我在哪里点击,我几乎总是选择ValueSelected而不是Nothingselected。 所以,我点击了一个空白区域

  • 问题内容: 如Google所记录,Gallery类在API级别16中已弃用。不再支持此小部件。其他水平滚动小部件包括支持库中的Horizo​​ntalScrollView和ViewPager。因此,我使用ViewPager作为Gallery类的替代方法。 我的目标是最终实现 带有文本描述 的 无限滚动图像ViewPager 。我使用以下代码实现了具有描述每个图像的文本的图像ViewPager,但是

  • 我一直在尝试使用Androidintent和intent来拍照或挑选照片。我遇到的问题是,当我尝试在肖像模式下使用Android photo intent拍照时,它会以横向方式保存。 我正试图从URI字符串中保存正确定向照片的