我有一个数据表集作为datagrid的itemsource(datagrid显示数据表的几个列)。除一个列之外的所有列都有文本,最后一列将图像保存为字节数组。 图片列绑定到图像控件,该控件显示数据网格中所选行的图像。 可以从磁盘位置或数据库收集数据表所保存的图像。最终,它们都将保存在数据库中。
我有一个按钮,应该将显示的图像顺时针旋转90°,然后再将它(作为字节数组)保存在完全相同的行(和列)上的数据表中。
我尝试了很多方法来做到这一点,但没有任何运气。 有人可以帮我转动并保存这张照片吗?
答案 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;
}