Cwac Camera добавить уменьшенное изображение

Я хочу сделать миниатюру изображения на экране камеры с помощью библиотеки cwac.

cameraFragment.takePicture();

            Bitmap bitmap = Utility.decodeSampledBitmapFromPath(
                    cameraFragment.cameraHost.getPhotoPath()
                            .getAbsolutePath(), 120, 120);
            image.setImageBitmap(bitmap);

person devcelebi    schedule 05.03.2014    source источник
comment
я хочу показать миниатюру сделанного снимка, как приложение камеры по умолчанию. Как мне это сделать:))   -  person devcelebi    schedule 05.03.2014
comment
Обратите внимание, что это не имеет ничего общего с библиотекой CWAC-Camera, поскольку вы можете захотеть показать миниатюру изображения из любого места, и код не будет существенно отличаться. В чем конкретно ваша проблема с кодом, который у вас есть, кроме попытки прочитать картинку до того, как она будет готова?   -  person CommonsWare    schedule 05.03.2014


Ответы (2)


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

Измените метод CameraFragment.onCreate, чтобы установить DemoCameraHost в качестве хоста по умолчанию:

public class CameraFragment extends com.commonsware.cwac.camera.CameraFragment {
private DemoCameraHost mDemoCamHost;

@Override
public void onCreate(Bundle state) {
    super.onCreate(state);
    setHasOptionsMenu(true);
    mDemoCamHost = new DemoCameraHost(getActivity());
    this.setHost(mDemoCamHost);
}

В методе DemoCameraHost метод useSingleShotMode должен возвращать false.

/**
* Method indicates if after taking picture bitmap is frozen or next frame shown.
*
* @return Enable showing preview, must be false for this project.
*/
@Override
public boolean useSingleShotMode() {
    return false;
}

Теперь вы должны переопределить метод saveImage в DemoCameraHost, где вы получаете изображение, закодированное в виде массива байтов, просто декодируйте его обратно:

@Override
public void saveImage(PictureTransaction xact, byte[] image) {
    Log.i(TAG, "saveImage");
    Bitmap bm = BitmapFactory.decodeByteArray(image, 0, image.length);
    //drawOnTop.setBitmap(bm); // this is my internal class that operates on the bitmap
    if (bm == null)
        Log.e(TAG, "bitmap is null");
    else
        Log.e(TAG, "bitmap size: " + bm.getWidth() + ":" + bm.getHeight());

    // dont'save image on SD, prevents delay and freezing screen
    //super.saveImage(xact, image);
}

Теперь, когда вы вызываете takePicture() из CameraFragment, вы получите:

 04-06 11:47:12.576    3038-3038/net.agilob.ssocv I/CamFrg﹕ useSingleShotMode
 04-06 11:47:12.596    3038-3130/net.agilob.ssocv I/CamFrg﹕ saveImage
 04-06 11:47:12.676    3038-3130/net.agilob.ssocv E/CamFrg﹕ bitmap size: 1280:960
person agilob    schedule 06.04.2015

Найдите решение: я не использую библиотеку камер cwac. Используйте пользовательскую компоновку камеры. Камера Kut

person devcelebi    schedule 05.06.2014