winforms 如何设置像素从原始图像到一个新的图像?

bvn4nwqk  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(172)

用法

public UserControlTester()
        {
            InitializeComponent();

            GetSetPixelsRandom();
        }

代码

private void GetSetPixelsRandom()
        {
            Bitmap img = new Bitmap(@"d:\\downloaded images\\test.gif");
            for (int i = 0; i < img.Width; i++)
            {
                for (int j = 0; j < img.Height; j++)
                {
                    Color pixel = img.GetPixel(i, j);
                    pixels.Add(pixel);
                }
            }

            Bitmap img1 = new Bitmap(512,512);

            for (int i = 0; i < img1.Width; i++)
            {
                for (int j = 0; j < img1.Height; j++)
                {
                    for (int c = 0; c < pixels.Count; c++)
                    {
                        img1.SetPixel(i, j, pixels[c]);
                    }
                }
            }

            img1.Save(@"d:\\downloaded images\\test3.gif");
        }

不确定这是否是正确的方法。使用变量c的内部循环需要很多时间,因为有超过290,000个像素。

o0lyfsai

o0lyfsai1#

假设你想调整图像的大小,这很容易做到。Bitmap构造函数内置了缩放功能:

Bitmap img = new Bitmap(@"d:\\downloaded images\\test.gif");
Bitmap img1 = new Bitmap(img, new Size(512, 512));
img1.Save(@"d:\\downloaded images\\test3.gif");

如果你不想调整大小,但确实采取随机像素,看看什么在MickyD提到。
请注意,在您提供的示例中,新图像中的每个像素实际上都设置为pixels列表中的最后一个像素,因为对于新图像中的每个像素,您都在pixels中的每个像素上循环。

相关问题