如何比较c#中的2个图像假设
我想知道如何获得大小像素的百分比 图像B比imageA
小nn%我做了这个,但想知道我做得对吗??? 图片总像素655360(1024x640) 图像B总像素为153600(320x480)
所以 string ImageBSize =(153600/655360)* 100 +"小于imageA&#34 ;;
答案 0 :(得分:1)
假设您正在使用System.Drawing.Image或System.Drawing.Bitmap,您可以只请求每个图像的“大小”属性。 '尺寸'分为'高度'和'宽度'。计算每个图像的“高度*宽度”,然后您可以计算两个图像的“尺寸”之间的比率。
Image imageA = new System.Drawing.Image("ImageA.png");
Image imageB = new System.Drawing.Image("ImageB.png");
double imageASize = imageA.Size.Height * imageA.Size.Width;
double imageBSize = imageB.Size.Height * imageB.Size.Width;
string ratio = string.Format("Image B is {0}% of the size of image A",
((imageBSize / imageASize)*100).ToString("#0"));
答案 1 :(得分:0)
你的算法是正确的,但要小心你在执行除法之前将值转换(或赋值)为双精度数,否则你会得到整数除法,如果imageB小于imageA,则总是得到0。
你可以在一行中这样做:
string ImageBSize = (((double) 153600 / 655360) * 100) + " percent smaller than imageA";
但是如果你把你的陈述分解成更小,更清晰的陈述,它将更具可读性和可维护性:
double imageASize = imageA.Size.Height * imageA.Size.Width;
double imageBSize = imageB.Size.Height * imageB.Size.Width;
double percentBIsSmaller = (imageBSize / imageASize) * 100;
string result = String.Format("B is {0:F2} percent smaller than A");
这会产生如下输出:
B is 12.5 percent smaller than A