我创建了一个形象的ByteArray从类似的ReportViewer下面
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" />
其示出了仅第一页中它。
谁可以帮我这个事 ?
请看下面我用它来解决这个问题的答案。 找台阶下
一线获得从图像流的所有帧作为图像列表
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[]));
}
我认为这将有助于一些人真正需要的。 请发表如果有人找到一个简单的方法来做到这一点。
要显示多张图片,使用HTML <img>
标签。
为了展示独特的图片,我建议你重新标记您的图片像IMG1,IMG2,IMG3,等等......所以,在你的img标签,你可以这样做:
<img src="folder/img<?php echo rand(1,10); ?>.jpg" />