在c#中实现调整图像大小

时间:2013-10-03 16:35:06

标签: c# image-processing

我已经实现了一个在c#(缩放)中垂直调整图像大小的功能。它需要两个参数:要调整大小的图像和图像的新高度。这是我的代码:

  public static Bitmap ScaleUpDown(Bitmap b, int height)
    {
        Bitmap scaledImage = new Bitmap(b.Width, height);

        int scaleRatio = height / b.Height;

        if (scaleRatio >= 1)
        {
            for (int i = 0; i < b.Width; i++)
            {
                for (int j = 0; j < b.Height; j++)
                {
                    Color pixel = b.GetPixel(i, j);

                    int fill = 0;
                    while (fill < scaleRatio)
                    {
                        scaledImage.SetPixel(i, scaleRatio * j + fill, pixel);
                        fill++;
                    }

                }
            }
        }

        return scaledImage;
    }

以下是我的操作:我访问每个像素,复制并将其粘贴到同一列或列中的下一行,具体取决于调整大小的比例。我的问题是,只有当新高度是旧高度的倍数时,此代码才能正常工作,例如2 * oldHeight,3 * oldHeight等。如果新高度应该是旧高度的1.5倍或1.3倍怎么办?我该怎么办?

由于

1 个答案:

答案 0 :(得分:2)

有关图像缩放和相关算法的详细说明,请参阅http://en.wikipedia.org/wiki/Image_scaling