Проблема с настройкой ориентации изображения - PullRequest
0 голосов
/ 02 августа 2011

Это мой второй вопрос по этой теме сегодня, но по предыдущему кажется, что я не достаточно ясен.

У меня есть мероприятие, в котором я создаю свою собственную камеру для фотографирования. В методе onCreate() этого действия я делаю что-то вроде:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

в противном случае весь мой экран выглядит так: В любом случае это решает мои проблемы на данный момент, и изображение выглядит хорошо.

После съемки фотографии я использую пакет и отправляю изображение в другое задание (Упражнение B), где я редактирую изображение и после этого сохраняю изображение на веб-сайте.

И вот проблема: Картинка, полученная в этом упражнении, снова неверно ориентирована, как здесь: ! [введите описание изображения здесь] [1], потому что я не выполнял никаких операций над самим изображением, только с ориентацией деятельности.

Теперь я мог бы сделать здесь то же самое и установить действие в режиме LANDSCAPE, и моя активность снова выглядела бы хорошо, но еще больше, когда я загружал изображение на веб-сайт, на веб-сайт за простой факт, что я ничего не сделал, чтобы установить ее собственную ориентацию.

Итак, в моем surfaceChanged() - в activity A, первом методе, я сделал что-то вроде этого:

Camera.Parameters p = mCamera.getParameters();
 p.set("orientation", "landscape");
 p.setRotation(90);
 mCamera.setParameters(p);

Но это не влияет на изображение, оно выглядит так же.

Я работаю над Sony Ericsson и мне нужна помощь в повороте моего изображения - не настраиваю orientation of my activity!

Спасибо, я здесь для более подробной информации. Спасибо

EDIT: В activity A, где я делаю изображение, я делаю это:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback(){
        public void onPictureTaken(byte[] imageData, Camera c) {

            if (imageData != null) {

                Intent mIntent = new Intent();

                //StoreByteImage(mContext, imageData, 50, "ImageName");
                mCamera.startPreview();

                Bundle b = new Bundle();
                b.putByteArray("imageData", imageData);
                Intent i = new Intent(mContext,ImageDisplayActivity.class);
                i.putExtras(b);
                startActivity(i);

                setResult(FOTO_MODE, mIntent);
                finish();

            }
        }
    };

И в activity B, где я получаю изображение, я делаю это:

Bundle extras = getIntent().getExtras();
 BitmapFactory.Options options=new BitmapFactory.Options();
        options.inSampleSize = 5;
        byte[] imageData = extras.getByteArray("imageData");
        Bitmap myImage = BitmapFactory.decodeByteArray(imageData , 0, imageData.length,options);
....///is set up the bitmap to an imageview

1 Ответ

3 голосов
/ 02 августа 2011

Хорошо, у меня есть догадка, что вы переоцениваете проблему!

Попробуйте повернуть myImage перед загрузкой

Matrix mat = new Matrix();
mat.postRotate(90);
image_to_upload = Bitmap.createBitmap(myImage, 0, 0, myImage.getWidth(), myImage.getHeight(), mat, true);

Попробуйте разные углы, я уверен, что это проблема, и вы найдете правильный путь

...