2013-06-21 1 views
0

Кажется, я что-то делаю неправильно.назначить растровое изображение asp: управление изображением в gridview

Все, что я хочу сделать, это показать уменьшенное изображение в gridview.

На странице ASPX есть gridview и asp: управление изображением. Imageurl для управления asp: image поступает с веб-сайта.

Как только я получу imageUrl, я хочу сделать изображение миниатюром, используя ниже функцию ResizeImage. Наконец, я хотел бы, чтобы присвоить миниатюру на колонке GridView, который показывает уменьшенное изображение, как показано на рисунке кода

protected void SearchResults_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType.Equals(DataControlRowType.DataRow)) 
    { 
     System.Web.UI.WebControls.Image imgNew = (System.Web.UI.WebControls.Image)e.Row.FindControl("ProductThumbField"); 
     imgNew.Source = Utils.ResizeImage(imgNew.ImageUrl.ToString(),60,60); 
    } 
} 

Вот код, который изменяет размер изображения. (взято из примера из вопросов stackoverflow & ответов).

private static Bitmap ResizeImage(String filename, int maxWidth, int maxHeight) 
{ 
    using (System.Drawing.Image originalImage = System.Drawing.Image.FromFile(filename)) 
    { 
     //Caluate new Size 
     int newWidth = originalImage.Width; 
     int newHeight = originalImage.Height; 
     double aspectRatio = (double)originalImage.Width/(double)originalImage.Height; 
     if (aspectRatio <= 1 && originalImage.Width > maxWidth) 
     { 
      newWidth = maxWidth; 
      newHeight = (int)Math.Round(newWidth/aspectRatio); 
     } 
     else if (aspectRatio > 1 && originalImage.Height > maxHeight) 
     { 
      newHeight = maxHeight; 
      newWidth = (int)Math.Round(newHeight * aspectRatio); 
     } 
     Bitmap newImage = new Bitmap(newWidth, newHeight); 
     using (Graphics g = Graphics.FromImage(newImage)) 
     { 
      //--Quality Settings Adjust to fit your application 
      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; 
      g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
      g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; 
      g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 
      g.DrawImage(originalImage, 0, 0, newImage.Width, newImage.Height); 

      return newImage; 
     } 
    } 

Вот фрагмент кода страницы ASPX.

<asp:GridView ID="SearchResults" runat="Server" AutoGenerateColumns="false" EnableViewState="false" 
AllowPaging="true" PageSize="10" ondatabound="SearchResults_DataBound" > 
<RowStyle CssClass="EvenRow" /> 
<AlternatingRowStyle CssClass="OddRow" /> 
<Columns> 
    <asp:TemplateField meta:resourceKey="ProductThumbField"> 
     <ItemStyle CssClass="ProductNameColumn" /> 
     <HeaderStyle CssClass="ProductNameColumn" /> 
     <ItemTemplate> 
      <asp:image id="ProductThumbImg" runat="server" imageurl='<%# GetProductThumb(Container.DataItem) %>' Width ="60px" Height = "60px" /> 
     </ItemTemplate> 
    </asp:TemplateField> 

ответ

0

Я нашел причину я не могу назначить растровое изображение, так как растровое изображение создается из System.Drawing тогда осины: изображение из system.web ...

Смежные вопросы