【问题标题】:A code to obtain each 8x8 block form a 2d array C#从 2d 数组 C# 中获取每个 8x8 块的代码
【发布时间】:2013-10-12 10:50:39
【问题描述】:

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

【问题讨论】:

  • 你已经尝试了什么?您是否得到异常或不正确的结果?
  • 你想把那些分割的图像放在一个图像数组中??或列表??

标签: c# image-processing jpeg multidimensional-array


【解决方案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 个图片框进行了测试,并从一个图片框中拍摄了一张图片。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2018-01-24
    • 2021-12-09
    • 2018-05-03
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多