Изображение SurfaceView снято не так, как показано - PullRequest
0 голосов
/ 07 декабря 2011

Я создал макет, в котором размер моей поверхности был изменен по сравнению с «исходным размером», я сделал следующее:

    ViewGroup.LayoutParams params = mSurfaceView.getLayoutParams();
    int mPixels=getResources().getDimensionPixelSize(R.dimen.profile_pic_dimension); //200
    params.width=mPixels;
    params.height=mPixels;
    mSurfaceView.setLayoutParams(params);
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

и получил вид, подобный этому: http://img412.imageshack.us/img412/9379/layoutp.png

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

Я пытался использовать это:

Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() {
    @Override
    public void onShutter() {
        Camera.Parameters p = mCamera.getParameters(); 
                p.setPictureSize(mSurfaceView.getWidth(), mSurfaceView.getHeight()); 
               mCamera.setParameters(p); 
        }
    };

, но все еще не получил желаемый размер изображения.

1 Ответ

0 голосов
/ 07 декабря 2011

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

До сих пор я не сталкивался ни с какими устройствами, которые поддерживают получение квадратных изображений, поэтому после 4: 3, 16: 9, 16:10 или любого другого соотношения снимок вам придется «вырезать» из соответствующихразделить себя и, при необходимости, уменьшить его до определенного размера.Вероятно, самый простой способ сделать это - создать новое растровое изображение в качестве подмножества из исходного растрового изображения (а затем при желании уменьшить его).Чтобы получить исходное растровое изображение, вам, вероятно, потребуется подключить PictureCallback к камере с помощью takePicture(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...