1

How to calculate the coordinates with respect to image after zoom the image? To zoom the image I followed the url: https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java.

if we touch the image at particular point before Zoom then corresponding values are

point:(3,2)
top left corner of image:(0,0)
top left corner of screen:(0,0)
scale factors:(1.25,0.98)

After zoom the image:

if we drag the image until the image top left corner coincides the screen top left corner and touch image exactly at same touch point(before pinch) then

point:(540,220)
top left corner of image:(0,0)
top left corner of screen:(0,0)
scale factors:(4.78,2.67)

if we drag the image until the image top right corner coincides with the screen top right corner and touch image exactly at same touch point(before pinch) then

point:(1080,340)
top left corner of screen:(0,0)
top left corner of image:(-2430,0)
scale factors:(4.78,2.67)

if we drag the image until the image bottom left corner coincides with the screen bottom left corner and touch image exactly at same touch point(before pinch) then

point:(670,80)
top left corner of screen:(0,0)
top left corner of image:(0,-890)
scale factors:(4.78,2.67)

if we drag the image until the image bottom right corner coincides with the screen bottom right corner and touch image exactly at same touch point(before pinch) then

point:(456,274)
top left corner of screen:(0,0)
top left corner of image:(-2430,-890)
scale factors:(4.78,2.67)

if we set the image over the screen [ not to set the any corner]

point:(743,146)
top left corner of screen:(0,0)
top left corner of image:(-1280,-423)
scale factors:(4.78,2.67)

In all the above scenarios I am getting the coordinates in touch event as

x_cord=event.getX();
y_cord=event.getY();

The touch points I am getting are with respect to the screen.

How can I calculate the touch points according to the Image?

Thanks & Regards mini.

mini
  • 855
  • 4
  • 15
  • 22

2 Answers2

1

We can calculate by calculating relative point according to the image size

float[] values = new float[9];
matrix.getValues(values);
x_coord = ((e.getX() - values[2])*scaleX )/values[0];
y_coord= ((e.gety() - values[5])*scaleY )/ values[4];
mini
  • 855
  • 4
  • 15
  • 22
1

In my case I calculated those points as follows. This will be helpful for someone.

x = (event.getX() / values[Matrix.MSCALE_X] - (values[Matrix.MTRANS_X]/values[Matrix.MSCALE_X]));
y = (event.getY() / values[Matrix.MSCALE_Y] - (values[Matrix.MTRANS_Y]/values[Matrix.MSCALE_Y]));
isuru
  • 3,385
  • 4
  • 27
  • 62