在数据表中旋转图像(字节数组)

时间:2014-08-29 13:57:29

标签: c# wpf rotation bytearray

我有一个数据表集作为datagrid的itemsource(datagrid显示数据表的几个列)。除一个列之外的所有列都有文本,最后一列将图像保存为字节数组。 图片列绑定到图像控件,该控件显示数据网格中所选行的图像。 可以从磁盘位置或数据库收集数据表所保存的图像。最终,它们都将保存在数据库中。

我有一个按钮,应该将显示的图像顺时针旋转90°,然后再将它(作为字节数组)保存在完全相同的行(和列)上的数据表中。

我尝试了很多方法来做到这一点,但没有任何运气。 有人可以帮我转动并保存这张照片吗?

2 个答案:

答案 0 :(得分:3)

未经测试但应该做的伎俩(可能需要将图像加载到位图)

using (var memoryStream = new MemoryStream(byteArray))
{
    var rotateImage = Image.FromStream(memoryStream);
    rotateImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
    rotateImage.Save(memoryStream, rotateImage.RawFormat);
    byteArray = memoryStream.ToArray();
}

编辑:由于某种原因,我忘记将图像保存回流...修复了

答案 1 :(得分:0)

经过测试。我不知道Image.Save()方法。新图像的质量可能存在问题(取决于输入图像的图像格式)

    public static Image GetImageFromDB(byte[] tab)
    {
         if (tab == null) return null;

        try
        {
            MemoryStream ms = new MemoryStream(tab);
            if (ms != null)
            {
                Image im = Image.FromStream(ms, true);
                // or: Image.FromFile(imagepath);
                im.RotateFlip(RotateFlipType.Rotate90FlipNone);
                ms.Dispose();

                im.Save(savedImagePath));
                return im;
            }
        }
        catch (Exception)
        {
        }

        return null;
    }