int newWidth = 100;
int newHeight = 100;
double ratio = 0;
if (img1.Width > img1.Height)
{
ratio = img1.Width / img1.Height;
newHeight = (int)(newHeight / ratio);
}
else
{
ratio = img1.Height / img1.Width;
newWidth = (int)(newWidth / ratio);
}
Image bmp1 = img1.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
bmp1.Save(Server.MapPath("~/Uploads/Photos/Thumbnails/") + photo.PhotoID + ".jpg");
我总是得到高度和宽度都相同的图像(100)
我真的对类型转换做错了吗?
最佳答案
ratio = img1.Width / img1.Height;
宽度和高度是整数。您将对这些值执行整数数学运算,然后再将它们存储在double中。在整数数学中,150/100为1。199/100为1。101/100为1。没有小数。计算出值之后,它将被存储在您的double中。
在进行计算之前,至少要投射出一侧以翻倍。
ratio = img1.Width / (double)img1.Height;
关于c# - 可变类型的C#新手问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2524371/