[英]How to calculate resolution based on megapixels and aspect ratio
如何在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=?
百萬像素的量等於分辨率的長度和寬度的乘積除以一百萬。 因此,對於您的5000x4000像素,您將擁有20 Mpx。 要將其重新縮放為0.6Mpx,但要保持比例,您只需要按20Mpx / 0.6Mpx的平方根重新縮放每個維度,以便在將新計算的維度相乘時,結果將等於0.6Mpx
因此,您的計算應類似於:
ratio=sqrt(20/0.6)
newWidth=oldWidth/ratio
newHeight=oldHeight/ratio
如果再將newWidth
與newHeight
相乘,則結果應為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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.