2 baby bonnie Baby_Bonnie 于 2012.11.14 13:02 提问

把ImageView的坐标转换成位图中的坐标

在程序中我想实现拍摄完一张图片后,想要获取图片中人物的眼睛在图片中的坐标。使用OnTouchListener.onTouch(…)方法获得ImageView的坐标。

如何把用户手动点击的位置坐标,及ImageView的坐标转化成位图中的坐标?

4个回答

nana4ever
nana4ever   2012.11.22 17:11
已采纳

给你先参考方法,这里面的方法你肯定能用的上:

ImageView imageView = (ImageView)findViewById(R.id.imageview);
Drawable drawable = imageView.getDrawable();
Rect imageBounds = drawable.getBounds();

//初始化bitmap的宽高
int intrinsicHeight = drawable.getIntrinsicHeight();
int intrinsicWidth = drawable.getIntrinsicWidth();

//可见image的宽高
int scaledHeight = imageBounds.height();
int scaledWidth = imageBounds.width();

//使用fitXY
float heightRatio = intrinsicHeight / scaledHeight;
float widthRatio = intrinsicWidth / scaledWidth;

//获取图像边界值
int scaledImageOffsetX = event.getX() - imageBounds.left;
int scaledImageOffsetY = event.getY() - imageBounds.top;

//根据你图像的缩放比例设置
int originalImageOffsetX = scaledImageOffsetX * widthRatio;
int originalImageOffsetY = scaledImageOffsetY * heightRatio;
franzhong
franzhong   2012.11.14 14:46

触屏得到的坐标只要减去,imageView距左距上距离不就是相对于图片的坐标了吗
如果图片充满了全屏的话,这个距离就是0,不用减,点击的位置xy也是眼睛的坐标了
不知你是不是这个意思

Baby_Bonnie
Baby_Bonnie 谢谢你的回答,就是这个意思!
5 年多之前 回复
zxd_72
zxd_72   2012.11.15 09:36

我在API 10+这个环境下,这个方法可以实现:

final float[] getPointerCoords(ImageView view, MotionEvent e)
{
    final int index = e.getActionIndex();
    final float[] coords = new float[] { e.getX(index), e.getY(index) };
    Matrix matrix = new Matrix();
    view.getImageMatrix().invert(matrix);
    matrix.postTranslate(view.getScrollX(), view.getScrollY());
    matrix.mapPoints(coords);
    return coords;
}
zhwswws
zhwswws   2015.06.29 16:13

楼主问题解决了吗? 我也是一样的问题 。。求解答

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ImageView的坐标转换为图片实际的坐标
publicfloat[] getPointerCoords(ImageView view, MotionEvent e) { final int index = e.getActionIndex(); final float[] coords = new float[] { e.getX(index), e.getY(index) }; Matrix matrix = n
Android 取到ImageView背景图片中某处的相对坐标
首先我们都知道在Activity中重写方法onTouchEvent(MotionEvent event)时,我们可以通过event.ge
原始 经纬坐标 生成 百度经纬坐标
实现 将 原始的经纬坐标变成百度经纬坐标。其实中里面就是调用了百度的api:"http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x="+/*经度*/xgps+"&y="+/*纬度*/ygps;/** * from: 来源坐标系 (0表示原始GPS坐标,2表示Google坐标)   to: 转换后的坐标 (4就是百度自己
平面直接读取坐标转EXCL
在autocad的平面图中直接读取坐标转换成EXCL
Android 图片与屏幕坐标点
计算获取的ImageView图片显示时的实际大小 public static int[] getRealImgShowSize(ImageView imageview){ Rect rect=imageview.getDrawable().getBounds(); //可见image的宽高 int scaledHeight = rect.height
获取ImageView中图片的坐标
Matrix matrix = getImageMatrix(); RectF rectF = new RectF(); Drawable drawable = getDrawable(); if (drawable != null) {    rectF.set(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight
Android开发地图应用--坐标转换
由于每个地图使用的坐标系不同,我伟大的祖国为了保密需要,规定不能直接使用WGS84地理坐标系,于是应用于中国的各个地图就会在原来坐标的基础上经过一个加密的加偏算法,把加偏过的坐标呈现给你,而不同地图的加偏算法又是不一样的,有的甚至是多次加偏。也就是说同样你是在人民广场,用百度地图和谷歌地图取到的坐标值是不一样的。 因为开发主要使用的是百度地图所以就只写了关于将其他定位的经纬度装换成百度地图的经纬度。
百度地图之地址信息和坐标的转换
在实际运用中,经常需要进行地理编码和地理反编码,即将地址信息转换成坐标和将坐标转换成地址信息,此demo就是用来展示如何进行地理编码搜索(用地址检索坐标)、反地理编码搜索(用坐标检索地址)以及展示如何使用ItemizedOverlay在地图上标注结果点,代码原型来自百度Demo,代码如下: Activity: package com.home; import android.app.Ac
CAD做好的图如何进行坐标转换
CAD做好的图如何进行坐标转换 当用CAD以某个坐标的图作为底图画好需要的图后,如果需要将地图转换成另外的坐标,这个时候怎么办呢,现在就教大家一个简单的办法进行坐标转换,有兴趣的朋友可以了解一下。 工具/材料 微型离线地图地理信息标注绘制系统平台(微图) 方法/步骤 1.说明一下,这是一款和CAD操作一模一样的软件,界面也是几乎一致(图1),可以直接加载在线地图进来进行矢量化,免去了插入
屏幕坐标与客户坐标的转换
WIN32  API函数: 1、ClientToScreen 函数:   函数功能:该函数将指定点的用户坐标转换成屏幕坐标。   函数原型:BOOL ClientToScreen(HWND hWnd,LPPOINT lpPoint);   参数:   hWnd :用户区域用于转换的窗口句柄。 注:第二个参数点的坐标是相对于第一个参数(窗口句柄)