2012-09-24 60 views
0

我創建從一個的ReportViewer字節組圖像像下面如何在<img/>標記中顯示多頁圖像?

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" />,它只顯示第一頁。

任何人都可以幫助我嗎?

回答

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[])); 
     } 

我認爲這會幫助一些人確實需要。如果有人找到一個簡單的方法來做這件事,請發帖。

0

要顯示多張圖片,請使用html <img>標記。

爲了展示獨特的圖片,我建議你重新標記您的圖片像IMG1,IMG2,IMG3,等等......所以,在你的img標籤,你可以做這樣的事情:

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

我不想創建多個Img標籤,這是不正確的,因爲我沒有一個圖像,而是有一個12幀的圖像。 – Pradeep

相關問題