我需要一种方法来计算调整为1024px
时图像的宽度和高度值图像,高度或宽度的最大值将调整为1024px,我需要计算剩余的宽度或高度值。
调整大小后,图像(3200 x 2400px)会转换为(1024 x 768像素)。
这需要是动态的,因为一些图像将是肖像和一些风景。
任何人都可以建议我如何解决以下问题:
<msxsl:script language="C#" implements-prefix="emint">
<![CDATA[public string GetExtension(string fileName)
{
string[] terms = fileName.Split('.');
if (terms.Length <= 0)
{
return string.Empty;
}
return terms[terms.Length -1];
}
public string GetFileName(string fileName)
{
string[] terms = fileName.Split('/');
if (terms.Length <= 0)
{
return string.Empty;
}
return terms[terms.Length -1];
}
public string GetFileSize(Decimal mbs)
{
Decimal result = Decimal.Round(mbs, 2);
if (result == 0)
{
result = mbs * 1024;
return Decimal.Round(result, 2).ToString() + " KB";
}
return result.ToString() + " MB";
}
public string GetCentimeters(Decimal pix)
{
Decimal formula = (decimal)0.026458333;
Decimal result = pix * formula;
return Decimal.Round(result,0).ToString();
}]]>
</msxsl:script>
答案 0 :(得分:2)
width = 1024;
height = 768;
ratio_orig = width_orig/height_orig;
if (width/height > ratio_orig) {
width = height*ratio_orig;
} else {
height = width/ratio_orig;
}
末尾的width
和height
的值对应于图像的宽度和高度。这保持了宽高比。
答案 1 :(得分:0)
这是伪代码中的算法。它将选择与原始图像具有相同宽度/高度比的最大可能尺寸(小于1024x1024像素)。
target_width = 1024
target_height = 1024
target_ratio = target_width / target_height
orig_ratio = orig_width / orig_height
if orig_ratio < target_ratio
# Limited by height
target_width = round(target_height * orig_ratio)
else
# Limited by width
target_height = round(target_width / orig_ratio)