Android获取图像的坐标

时间:2016-10-24 11:28:31

标签: android image imageview

我有一个自定义ImageView,用于在网页上重新定位图像。在手机屏幕上看到的图像应代表网页上的图像。

我正在使用Matrix.mapPoints(float[] dst, float[] src)尝试获取在缩放以正确构图图像时图像偏移的程度。我还考虑了缩放图像的程度,以及手机上的图像视图与网页上的图像标签宽度相比的大小。

图像视图类中的UpdateImage()

public void updateImage() {
      final float phoneDisplayScale = (float) getWidth() / (float) getDrawable().getIntrinsicWidth();

      float[] m = new float[9];
      matrix.getValues(m);

      float scale = m[Matrix.MSCALE_X];
      float[] arr = {0, 0};
      matrix.mapPoints(arr, arr);

      //holder.rect = {image_x, image_y, imageWidth, imageHeight}

      if (holder != null) {
        holder.getRect()[0] = arr[0] / phoneDisplayScale;
        holder.getRect()[1] = arr[1] / phoneDisplayScale;
        holder.getRect()[2] = scale * (getImageWidth() / phoneDisplayScale);
        holder.getRect()[3] = scale * (getImageHeight() / phoneDisplayScale);

        Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
        Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
        Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
      }
      //
      //   
      // Socket io code
      //   
      //

}

这可以在缩放和对齐图像时使用,使图像的左上角位于ImageView的左上角,但是您永远无法放大图像的右下角。我还注意到,如果我放大到最大值,则map points方法返回图像的宽度和高度(减去值)。

1 个答案:

答案 0 :(得分:0)

好吧,我的逻辑有点偏离我已将位置计算更改为以下内容,现在可以正常工作。

holder.getRect()[0] = (arr[0] / scale) * phoneDisplayScale;
holder.getRect()[1] = (arr[1] / scale) * phoneDisplayScale;