如何在<img/>代码中显示多分页图片?

时间:2012-09-24 06:45:11

标签: c# html reportviewer

我已经从ReportViewer创建了一个图像bytearray,如下所示

bytes=  reportViewer.ServerReport.Render("Image", null, out mimeType, out encoding, out extension, out streamids, out warnings);

我使用下面的代码保存在一个物理路径中,创建一个图像有12页。

System.IO.File.WriteAllBytes(@"C:\test.jpeg", bytes);

我想在<img>标记中显示此图片,其中所有页面都是一个接一个。

我尝试了<img src="c://test.jpeg" />,只显示了第一页。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

要显示多张图片,请使用html <img>标记。

要显示独特的图片,我建议您将图片重新标记为img1,img2,img3等...以便在您的img标签中可以执行以下操作:

<img src="folder/img<?php echo rand(1,10); ?>.jpg" />

答案 1 :(得分:0)

找到我用来解决此问题的答案。 找到步骤

首先 - 从图像流中获取所有帧作为图像列表

public List<Image> GetAllFrames(Stream sm)
        {
            List<Image> images = new List<Image>();
            Bitmap bitmap = new Bitmap(sm);
            int count = bitmap.GetFrameCount(FrameDimension.Page);
            for (int idx = 0; idx < count; idx++)
            {
                bitmap.SelectActiveFrame(FrameDimension.Page, idx);
                MemoryStream byteStream = new MemoryStream();
                bitmap.Save(byteStream, ImageFormat.Tiff);

                images.Add(Image.FromStream(byteStream));
            }
            return images;
        }

秒 - 将所有帧组合成单个位图。

public Bitmap CombineAllFrames(List<Image> test)
        {
            int width = 0;
            int height = 0;
            Bitmap finalImage = null;
            try
            {
                foreach (Bitmap bitMap in test)
                {
                    height += bitMap.Height;
                    width = bitMap.Width > width ? bitMap.Width : width;
                }
                finalImage = new Bitmap(width, height);
                using (System.Drawing.Graphics gc = Graphics.FromImage(finalImage))
                {
                    gc.Clear(Color.White);
                    int offset = 0;
                    foreach (Bitmap bitmap in test)
                    {
                        gc.DrawImage(bitmap, new Rectangle(0, offset, bitmap.Width, bitmap.Height));
                        offset += bitmap.Width;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return finalImage;
        }

此方法创建一个位图,将所有帧垂直附加到单个帧中。 如果你想横向将其更新为

    width += bitmap.Width;
           height = bitmap.Height > height ? bitmap.Height : height;
g.DrawImage(image, 
           new System.Drawing.Rectangle(offset, 0, image.Width, image.Height));

第三步 - 现在,如果您想要创建图像的字节数组 请拨打以下方法。

public byte[] GetBytesFromImage(Bitmap finalImage)
        {
            ImageConverter convertor = new ImageConverter();
            return (byte[])convertor.ConvertTo(finalImage, typeof(byte[]));
        }

我认为这将有助于某些人真正需要。如果有人找到一个简单的方法,请发帖。