change condition for zoom rect

pull/488/head
Suneet Agrawal 6 years ago
parent c5ba03b7da
commit ef869a64ab
  1. 32
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java

@ -24,6 +24,11 @@ import android.os.Build;
import android.view.Surface; import android.view.Surface;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.WorkerThread;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.TaskCompletionSource;
import com.google.android.gms.tasks.Tasks; import com.google.android.gms.tasks.Tasks;
@ -60,11 +65,6 @@ import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.WorkerThread;
// TODO zoom // TODO zoom
// TODO exposure correction // TODO exposure correction
@RequiresApi(Build.VERSION_CODES.LOLLIPOP) @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
@ -951,18 +951,18 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
@NonNull @NonNull
private Rect getZoomRect(float zoomLevel, float maxDigitalZoom) { private Rect getZoomRect(float zoomLevel, float maxDigitalZoom) {
Rect activeRect = mCameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE); Rect activeRect = readCharacteristic(mCameraCharacteristics,
if ((zoomLevel <= maxDigitalZoom) && (zoomLevel > 1) && activeRect != null) { CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE,
int minW = (int) (activeRect.width() / maxDigitalZoom); new Rect());
int minH = (int) (activeRect.height() / maxDigitalZoom);
int difW = activeRect.width() - minW; int minW = (int) (activeRect.width() / maxDigitalZoom);
int difH = activeRect.height() - minH; int minH = (int) (activeRect.height() / maxDigitalZoom);
int cropW = difW / 20 * (int) zoomLevel; int difW = activeRect.width() - minW;
int cropH = difH / 20 * (int) zoomLevel; int difH = activeRect.height() - minH;
return new Rect(cropW, cropH, activeRect.width() - cropW, activeRect.height() - cropH);
}
return new Rect(0, 0, activeRect.width(), activeRect.height()); int cropW = (int) (difW * (zoomLevel - 1) / (maxDigitalZoom - 1) / 2F);
int cropH = (int) (difH * (zoomLevel - 1) / (maxDigitalZoom - 1) / 2F);
return new Rect(cropW, cropH, activeRect.width() - cropW, activeRect.height() - cropH);
} }
@Override @Override

Loading…
Cancel
Save