如何镜像图像

时间:2015-10-26 05:17:20

标签: c# image

这是我的原始图片, enter image description here

我想镜像它并让它看起来像这样, enter image description here

我想镜像我的图像,以便原始图像和镜像图像并排显示。唯一的问题是,我不知道如何扩展原始图像的范围,以便在其旁边添加镜像图像。

使用我的代码(下面)我设法创建镜像图像,只是我不能同时显示原始图像和镜像图像。

我的代码,

        int Height = TransformedPic.GetLength(0);
        int Width = TransformedPic.GetLength(1);

        for (int i = 0; i < Height / 2; i++)
        {
            for (int j = 0; j < Width; j++)
            {
                var Temporary = TransformedPic[i, j];
                TransformedPic[i, j] = TransformedPic[Height - 1 - i, j];
                TransformedPic[Height - 1 - i, j] = Temporary;
            }
        }

TransformedPic是保存原始图片的变量

2 个答案:

答案 0 :(得分:3)

第1步:镜像图像。 要做到这一点,应用负面的sacaletransform。喜欢

new ScaleTransform() { ScaleX = -1 };

然后并排合并两个图像。 你可以在这里看到它,如何合并Two images

这是另一种方式:

        //Get Your Image from Picturebox
        Bitmap image1 = new Bitmap(pictureBox1.Image);
        //Clone it to another bitmap
        Bitmap image2 = (Bitmap)image1.Clone();
        //Mirroring
        image2.RotateFlip(RotateFlipType.RotateNoneFlipX);

        //Merge two images in bitmap image,
        Bitmap bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height));
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            g.DrawImage(image1, 0, 0);
            g.DrawImage(image2, image1.Width, 0);
        }
        //Show them in a picturebox
        pictureBox2.Image = bitmap;

答案 1 :(得分:1)

这是使用BitMap完成的方式,您可以从图形中绘制图像并使用修改过的图形对象重绘图形对象。

public Bitmap MirrorImage(Bitmap source)
    {
        Bitmap mirrored = new Bitmap(source.Width, source.Height);
        for(int i = 0; i < source.Height; i++)
            for(int j = 0; j < source.Width; j++)
                mirrored.SetPixel(i, j, source.GetPixel(source.Width - j - 1, i);
        return mirrored;
    }