我想在MVC应用程序中使用旋转的图像。 为了这个目的,我想要一个控制器,它返回一个旋转的图像,但我不能让它工作。
这是我的命令:
public ActionResult PictureStreamRotate(string filename)
{
Image image = Image.FromFile(filename);
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
return File(stream, "image/jpeg");
}
流回的图像无效。死有人有任何想法。
输入图片是JPG
文件。
顺便说一句。即使我删除了行Image.RotateFlip
它也无法工作。
答案 0 :(得分:1)
这是因为流的位置在写入数据之后。 ToArray()
从一开始就获取流中的所有内容。或者,您可以将Position
设置为零,或将Seek
设置为图像数据的开头。
在LinqPad中试试这个:
var x = new MemoryStream();
x.WriteByte(123);
x.ReadByte().Dump();
结果是-1
......
然后使用x.Position=0;
,然后返回123
。
BTW,ToArray()
复制数据,这不是你想要的,我想。