【问题标题】:Via math formula get coords(pixels) of Low Resolution Bitmap and Put them into same location to High Resolution bitmap Android通过数学公式获取低分辨率位图的坐标(像素)并将它们放入与高分辨率位图 Android 相同的位置
【发布时间】:2015-11-05 08:26:59
【问题描述】:

所以我通过本机 API 从相机制作图像。问题是,我还有一个算法来计算一些东西(使用位图),当分辨率太高(例如 3000x2500)时,问题来了,因为我需要等待太多时间。

所以首先想到的是,它就像一个解决方法:

  1. 位图转换为低分辨率(例如 600x800)。
  2. 使用此低分辨率位图(计算一些内容并计算位于此低分辨率位图上的坐标)。
  3. 获取精确的像素坐标并通过一些数学公式(计算宽度/高度或像素?)将它们放在同一个位置,但在源位图上(高分辨率)。

那么我该如何实现这部分呢?我认为这是可能的,但无法理解究竟需要做什么。
谢谢!

【问题讨论】:

  • 不明白谁反对这个。告诉我有什么问题和错误的修改。
  • 如果您知道如何转换分辨率、使用算法等。那么通过简单地将坐标乘以比例值来简单转换坐标有什么问题?或者只是更具体地问你的问题......你的输入到底是什么,你的输出应该是什么?
  • 哪一部分对您来说是个问题?将您的位图转换为低分辨率或以比率获取大位图中的像素位置?
  • @Prizoff 如何获得这个比例值?比率 = LowResolutionBitmap.Width / HighResolutionBitmap.Width ?在那之后,我需要在坐标上乘以这个比率,我从低分辨率得到了什么? PS moi 输入高分辨率 izobrajenie,moi 输出 toje 高分辨率 izobrajenie,no predvaritelino,ia ispoliziu spetsialinii 算法 na 低分辨率 izobrajenie,vo izbejanii dolgih zatrat na vi4eslenie。
  • @XavierFalempin “在大位图中以比例获取像素位置” - 是的,那一刻!所以它是正确的:比率=低分辨率的高度或宽度/源(高分辨率)高度或宽度?

标签: android bitmap coordinates resolution pixels


【解决方案1】:

好的,这就是你所需要的

假设您已经为低分辨率图像计算了一些 x、y 值:

int lowResX, lowResY;

比将它们转换为高分辨率:

double scaleRatio = hiResImageWidth / lowResImageWidth; //be sure to use here double or float values as the result of integer division will be int, and not the double/float!
int hiResX = (int) (lowResX * scaleRatio);
int hiResY = (int) (lowResY * scaleRatio);

就是这样

【讨论】:

    【解决方案2】:

    如果您知道 w,h 位图中的 x,y 位置,那么您在 W,H 位图中寻找的 X,Y 只是简单的比率

    x/w = X/W 您可以轻松解决:X = x * W/w

    同样你得到 Y = y * H/h

    【讨论】:

    • 所以我可以通过这个公式得到比率:Ratio = SourceWidth / LowResWidth。不过谢谢你的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2013-08-14
    • 2011-04-07
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多