相关疑难解决方法(0)

Android:从图库加载的位图在ImageView中旋转

当我将媒体库中的图像加载到位图时,一切都运行正常,除了在垂直拿着手机时用相机拍摄的图片被旋转,以便我总是得到水平图片,即使它在画廊.为什么这样,我怎么能正确加载它?

android bitmap rotation gallery

132
推荐指数
8
解决办法
11万
查看次数

使用ACTION_IMAGE_CAPTURE拍摄的图像在某些Gingerbread设备上的ExifInterface.TAG_ORIENTATION返回1

在处理ACTION_IMAGE_CAPTURE活动时我遇到了方向问题.我已经使用过,TAG_ORIENTATION所以我会相应地旋转图片.但现在我们发现在一些较新的设备上这不起作用.事实上,它为所有方向返回1.

这是我们观察到的设备列表;

  • 三星Infuse 4G(2.3.3)
  • 三星Galaxy SII X(2.3.5)
  • 索尼Xperia Arc(2.3.3)

有趣的是,一旦这个图像是图库它正确显示,如果我选择它,TAG_ORIENTATION就会正确填充.所以不知何故OS正确地填写了这些信息,但没有ActivityResult.

确定方向的最可靠方法是什么?有人在另一个问题上建议比较高度和宽度但是在获得这些时,它们会根据方向正确切换(另一个谜)

编辑:似乎这可能连接到另一个错误,其中操作系统复制在库中拍摄的图像(它只应该将图像保存在我们指定的URL中),事情是这个图像在库中有ORIENTATION信息而指定位置的一个没有.

这是错误; http://code.google.com/p/android/issues/detail?id=19268

编辑2:我已经向Android提交了一个新的错误.我很确定这是与上述错误相关的操作系统错误. http://code.google.com/p/android/issues/detail?id=22822

android exif image-capture orientation

40
推荐指数
3
解决办法
4万
查看次数

35
推荐指数
2
解决办法
7万
查看次数

在三星Galaxy S上以肖像模式"拍照并呈现"

我想简单地拍一张照片并用我的三星galaxy s在ImageView中呈现它.当我在风景上而不是在肖像上做它时工作正常.我没有得到任何错误或异常 - 只是没有得到任何东西......有很多关于这个主题的问题,它似乎有问题(关于相机方向的东西),但不能找出一个简单的最终解决方案"拍照并呈现"代码.这是我的(有问题的)代码不起作用:

private void setUpListeners() {
    takePicture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent cameraIntent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == CAMERA_PIC_REQUEST) {
            Log.d("onActivityResult", "CAMERA_PIC_REQUEST returned");
            dishImage = (Bitmap) data.getExtras().get("data");
            if (dishImage==null)
                Log.d("onActivityResult", "dishImage==null");
            imageView = (ImageView) findViewById(R.id.dishinfodishimageview);
            imageView.setImageBitmap(dishImage);
            imageView.setVisibility(View.VISIBLE);
            takePicture.setVisibility(View.GONE);
            (new UploadImage()).execute(null);
        }
    } else {
        Log.e("onActivityResult",
                "no able to …
Run Code Online (Sandbox Code Playgroud)

android android-intent galaxy

8
推荐指数
1
解决办法
3480
查看次数

图像方向 - Android

在过去一个月左右的时间里,我一直在努力解决这个问题.每当我认为我已经修复它似乎以某种形式回来.

这是旧的Android"图像旋转90度"的错误.我已经在这里阅读了无数的帖子(StackOverFlow)以及尝试了很多方法,但似乎无法修复它.

我仍然得到错误旋转的图像.

在我的应用程序中,用户选择他/她的个人资料图片,然后将其设置为ImageView.图像选自Phones Gallery

两天前,我实施了以下代码,这适用于我在手机上测试的所有图像.然而,当我的一位Beta测试者试用它时,他的图像再次被旋转.他把图像发给我测试,但他们在我的手机上显示正常.因此,为什么我越来越沮丧.

这是我用来获取图像方向的方法:

// Gets an Images Orientation
public static int getOrientationEXIF(Context context, Uri uri) {

    int orientation = 0;

    try {

        ExifInterface exif = new ExifInterface(uri.getPath());

        orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

        switch (orientation) {

            case ExifInterface.ORIENTATION_ROTATE_90:
                orientation = 90;
                return orientation;

            case ExifInterface.ORIENTATION_ROTATE_180:
                orientation = 180;
                return orientation;

        }

    } catch (IOException e) {
        e.printStackTrace();
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我使用此方法获得旋转的位图:

// Rotate a Bitmap
public static Bitmap rotate(float rotationValue, String filePath) {
    Bitmap original= BitmapFactory.decodeFile(filePath);

    int …
Run Code Online (Sandbox Code Playgroud)

java android exif image bitmap

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

如何知道图片是风景还是肖像?

我的画廊中有照片,无论是风景还是肖像.在Gallery应用程序中正确显示.当我使用意图从库中选择图片时,我得到了一个URI.但在我显示图片之前,如何知道图片是纵向还是横向?

我的应用程序使用Intent选择图片,如下所示:

    private OnClickListener btnChooseFromLibraryListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
        intent.setType("image/*");
        startActivityForResult(intent, REQ_CODE_PICK_IMAGE);
    }
};
Run Code Online (Sandbox Code Playgroud)

以下是我如何获得意图:

    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case REQ_CODE_PICK_IMAGE:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String filePath = cursor.getString(columnIndex);
            cursor.close();

            SetPicture(filePath);
        }
    }
}

private void SetPicture(String filePath) { …
Run Code Online (Sandbox Code Playgroud)

android android-intent

4
推荐指数
1
解决办法
3205
查看次数