如何在标签中显示多页图像?

我已经从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); 

我想在标签中显示此图像,其中所有页面都是一个接一个。

我试过了 ,它只显示了第一页。

谁可以帮我这个事 ?

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

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

 public List GetAllFrames(Stream sm) { List images = new List(); 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 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[])); } 

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

要显示多张图片,请使用html 标签。

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