Comment mettre en œuvre le zoom par pincement de la fonctionnalité de prévisualisation de la caméra
j'ai essayé de pincement de la fonction de zoom de l'image de cette.il fonctionne très bien, mais comment puis-je mettre en œuvre le zoom par pincement de la fonctionnalité de prévisualisation de la caméra.
S'il vous plaît aider moi.
Merci à l'avance.
privateSurfaceHolder mHolder;privateCamera mCamera;float mDist =0;@Overridepublicboolean onTouchEvent(MotionEventevent){//Get the pointer IDCamera.Parametersparams= mCamera.getParameters();int action =event.getAction();if(event.getPointerCount()>1){//handle multi-touch eventsif(action ==MotionEvent.ACTION_POINTER_DOWN){
mDist = getFingerSpacing(event);}elseif(action ==MotionEvent.ACTION_MOVE &¶ms.isZoomSupported()){
mCamera.cancelAutoFocus();
handleZoom(event,params);}}else{//handle single touch eventsif(action ==MotionEvent.ACTION_UP){
handleFocus(event,params);}}returntrue;}privatevoid handleZoom(MotionEventevent,Camera.Parametersparams){int maxZoom =params.getMaxZoom();int zoom =params.getZoom();float newDist = getFingerSpacing(event);if(newDist > mDist){//zoom inif(zoom < maxZoom)
zoom++;}elseif(newDist < mDist){//zoom outif(zoom >0)
zoom--;}
mDist = newDist;params.setZoom(zoom);
mCamera.setParameters(params);}publicvoid handleFocus(MotionEventevent,Camera.Parametersparams){int pointerId =event.getPointerId(0);int pointerIndex =event.findPointerIndex(pointerId);//Get the pointer's current positionfloat x =event.getX(pointerIndex);float y =event.getY(pointerIndex);List<String> supportedFocusModes =params.getSupportedFocusModes();if(supportedFocusModes !=null&& supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)){
mCamera.autoFocus(newCamera.AutoFocusCallback(){@Overridepublicvoid onAutoFocus(boolean b,Camera camera){//currently set to auto-focus on single touch}});}}/** Determine the space between the first two fingers */privatefloat getFingerSpacing(MotionEventevent){//...float x =event.getX(0)-event.getX(1);float y =event.getY(0)-event.getY(1);return(float)Math.sqrt(x * x + y * y);}
il fonctionne, mais il doit être ajouté une ligne pour ce membre de données: private float mDist; le lien est mort pour le github de contenu ! fonctionne parfaitement.. beau travail.. thnxx ! merci 🙂 fonctionne pour moi J'ai copié/collé les parties pertinentes
C'est ce que j'ai utilisé pour ajouter une pincée de zoom. Le lien vers le code est ici:
https://github.com/maxtower/AndroidDocumentScanner/blob/master/app/src/main/java/com/martin/opencv4android/CameraPreview.java
le lien est mort pour le github de contenu !
fonctionne parfaitement.. beau travail.. thnxx !
merci 🙂 fonctionne pour moi
J'ai copié/collé les parties pertinentes
OriginalL'auteur mtbomb