0

是否有任何代码可以从 C# 中的二维数组中获取 8x8 块?例如,如果我们有一个 1920x1080 的图像,则需要将该二维数组拆分为 8x8 块并处理每个块。(用于 FDCT 和量化)。我正在做关于 JPEG 压缩的图像处理项目。

4

1 回答 1

1

我制作了一个工作样本,

List<Image> splitImages(int blockX, int blockY, Image img)
{
    List<Image> res = new List<Image>();
    for (int i = 0; i < blockX; i++)
    {
        for (int j = 0; j < blockY; j++)
        {
            Bitmap bmp = new Bitmap(img.Width / blockX, img.Height / blockY);
            Graphics grp = Graphics.FromImage(bmp);
            grp.DrawImage(img, new Rectangle(0, 0, bmp.Width, bmp.Height), new Rectangle(i * bmp.Width, j * bmp.Height, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
            res.Add(bmp);
        }
    }
    return res;
}

private void testButton_Click_1(object sender, EventArgs e)
{
    // Test for 4x4 Blocks
    List<Image> imgs = splitImages(4, 4, pictureBox1.Image);
    pictureBox2.Image = imgs[0];
    pictureBox3.Image = imgs[1];
    pictureBox4.Image = imgs[2];
    pictureBox5.Image = imgs[3];
}

4x4 块将提供 16 张图像。但我已经用 4 个图片框进行了测试,并从一个图片框中拍摄了一张图片。

于 2013-10-05T13:56:37.057 回答