0

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 倍である必要がある場合 それについて私は何ができますか?

ありがとう

4

1 に答える 1

2

画像のスケーリングと関連アルゴリズムの詳細については、http://en.wikipedia.org/wiki/Image_scalingを参照してください。

于 2013-10-03T16:39:00.817 に答える