如何计算基于百万像素和纵横比的分辨率

本文关键字:分辨率 像素 于百万 何计算 计算 | 更新日期: 2023-09-27 18:12:04

如何在c#中计算基于百万像素的精确分辨率?

假设我有一个5000x4000像素的图像,我想重新缩放到0.6mpx,我如何获得准确的水平和垂直分辨率来获得0.6mpx的图像,保持原始的长宽比?

我有这个:

int nXPixels=5000;  // original image Width
int nYPixels=4000;  // original image Height
float fRatio=5000/4000;    // original image aspect ratio
int nNewPixelResolution=600000; // 0.6mpx new resolution
int nNewXPixels=?
int nNewYPixels=?

如何计算基于百万像素和纵横比的分辨率

百万像素的数量等于分辨率的长度和宽度的乘积,除以100万。所以对于5000x4000像素,你会得到20mpx。要将其重新缩放到0.6Mpx,但保持比例不变,您只需要将每个维度重新缩放20Mpx/0.6Mpx的平方根,这样,当新计算的维度将乘以时,结果将等于0.6Mpx

所以你的计算应该类似于:
ratio=sqrt(20/0.6)
newWidth=oldWidth/ratio
newHeight=oldHeight/ratio

如果将newWidthnewHeight相乘,结果应该是大约0.6Mpx,或600000 px

int nXPixels=5000;  // original image Width
int nYPixels=4000;  // original image Height
//float fRatio=5000/4000;    // original image aspect ratio
int nNewPixelResolution=600000; // 0.6mpx new resolution
int nOldPixelResolution=nXPixels*nYPixels;
double conv = Math.sqrt((double)nNewPixelResolution/(double)nOldPixelResolution);
int nNewXPixels= (int)Math.round(nXPixels*conv);
int nNewYPixels= (int)Math.round(nYPixels*conv);