Кажется, я что-то делаю неправильно.назначить растровое изображение 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>