假设我有一个200x100或任意大小的图像的以下代码:
Image image = Bitmap.FromFile(fileName);
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
image.save(fileName);
假设输出尺寸为100x200是否安全?宽度和高度是否完全交换了值?我的同事确信它可能无法保证。我认为所涉及的矩阵数学是精确可靠的。谁是对的?如果重要,我们正在处理tif图像。
答案 0 :(得分:4)
Image.RotateFlip方法仅以90度(0,90等)的精确倍数进行旋转 这意味着在您使用它之后,您将始终获得以下两种结果之一: 1.宽度和高度将保持不变(例如,当您不旋转或旋转180度时)。 2.或者宽度和高度将是精确交换的值。
奖金信息: 这种类型的直角旋转是无损的"这意味着保留了颜色值,并且可以颠倒操作而不会丢失任何像素值。 另一方面,任何旋转不是90度倍数的任意角度的算法都是有损算法。通过进行反向旋转不能保证恢复像素位置和/或精确颜色值。