首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么将多个图片合并到一个文件流,一同输出到网页显示

2012-10-10 
如何将多个图片合并到一个文件流,一同输出到网页显示现在我需要根据某条信息读出它所有的图片信息,然后为

如何将多个图片合并到一个文件流,一同输出到网页显示
现在我需要根据某条信息读出它所有的图片信息,然后为了不让别人直接看到真是图片地址是打算通过ashx直接resnponse输出图片,但问题是如何才能将多个图片同时输出显示?我始终只能显示出第一张图片.
下面是我写的部分代码,打算将多个图片写进一个文件流然后在一起输出,但结果还是只有第一张图,其中images是一个List<String>集合,存放的是图片的路径

C# code
response.ContentType = "image/jpeg";                    var stream = new MemoryStream();                    foreach (var img in images)                    {                        var imgbyte = File.ReadAllBytes(Sph.Common.Variables.ImgUploadRootPath + img.TrimStart('/'));                        stream.Write(imgbyte, 0, imgbyte.Length);                    }                    stream.Close();                    response.BinaryWrite(stream.GetBuffer());                    response.Flush();


请问该如何修改,能同时将多个图片输出显示?

[解决办法]
response.ContentType = "image/jpeg";

这样只能输出一个图片。,

要是多张图片,必须合成为一张才你输出
[解决办法]
后台只能刷一次,你可以在前台页面指定图片id,后台根据id不同刷出不同的图片在同一个页面上,前台指定多个图片的不同链接。
[解决办法]
你的方法没法放回多张图片。
我能想到两个方法
1. 把图片存在服务器端,在多个Image控件指向不同的图片。
用动态创建控件, 或者DataList都可以实现,不难。

2. 服务器端合成一个图片并返回。
用GDI+,下面代码是我的缩小图片尺寸的代码,在asp.net中使用的。你可以参考它自己写合并多张图片的代码。
C# code
private void ReduceImageSize(string filePath)        {            using (MemoryStream OrgImageMemory = new MemoryStream(File.ReadAllBytes(filePath)))            {                using (Image orgImage = Image.FromStream(OrgImageMemory))                {                    using (Bitmap result = new Bitmap(orgImage.Width / 2, orgImage.Height / 2))                    {                        result.SetResolution(orgImage.HorizontalResolution / 2, orgImage.VerticalResolution / 2);                        using (Graphics graphics = Graphics.FromImage(result))                        {                            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;                            graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;                            graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;                            graphics.DrawImage(orgImage, 0, 0, result.Width, result.Height);                        }                        result.Save(filePath);                    }                }            }        }
[解决办法]
页面
HTML code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">  <Columns>  <asp:BoundField DataField="PersonName" />  <asp:ImageField DataImageUrlField="PersonId" DataImageUrlFormatString="ShowImage.aspx?id={0}"/>    </Columns>  </asp:GridView> 

热点排行