如何根据百万像素和宽高比计算分辨率

时间:2014-07-09 14:26:25

标签: c# image resolution

如何在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=?

2 个答案:

答案 0 :(得分:2)

百万像素的数量等于分辨率的长度和宽度的乘积除以100万。因此,对于5000x4000像素,您将拥有20 Mpx。要将其重新调整为0.6Mpx,但保持比率,您只需要通过20Mpx / 0.6Mpx的平方根重新调整每个维度,这样,当新计算的维度将乘以时,结果将等于0.6Mpx < / p>

所以你的计算应该类似于:

ratio=sqrt(20/0.6)
newWidth=oldWidth/ratio
newHeight=oldHeight/ratio

如果您将newWidthnewHeight相乘,则结果应大约为0.6Mpx或600000像素

答案 1 :(得分:1)

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);