Как достать картинку из базы? да легко!
расположим на форме GridView:
<asp:GridView ID="gvImages" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" >
<Columns>
<asp:BoundField HeaderText = "Image Name" DataField="imagename" />
<asp:TemplateField HeaderText="Image">
<ItemTemplate>
<cc1:GeneratedImage ID="GeneratedImage2" runat="server"
ImageHandlerUrl="~/ImageFromDB.ashx" >
<Parameters>
<cc1:ImageParameter Name="ImID" Value='<%# Eval("ImageID")%>' />
</Parameters>
</cc1:GeneratedImage>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Заполним его во время загрузки страницы:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand command = new SqlCommand("SELECT imagename,ImageID,Image from [Image]", connection);
SqlDataAdapter ada = new SqlDataAdapter(command);
ada.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();
}
Назовем наш хендлер ImageFromDB.ashx и опишем его:
using System;
using System.Web;
using System.Collections.Specialized;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using Microsoft.Web;
public class ImageFromDB : ImageHandler {
public ImageFromDB() {
this.EnableServerCache = true;
this.EnableClientCache = true;
}
public override ImageInfo GenerateImage(NameValueCollection parameters) {
// Добавляем логику генерации изображения и возвращем инстанс класса ImageInfo
string imageid = parameters["ImID"].ToString();
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
connection.Open();
SqlCommand command = new SqlCommand("select Image from Image where ImageID=" + imageid, connection);
SqlDataReader dr = command.ExecuteReader();
dr.Read();
this.ImageTransforms.Add(new WaterMark());
return new ImageInfo((Byte[])dr[0]);
}
}
Класс трансформации изображения
public class WaterMark : ImageTransform
{
public WaterMark() { }
public override System.Drawing.Image ProcessImage(System.Drawing.Image img)
{
Graphics gra = Graphics.FromImage(img);
// ну тут мы просто добавляем надпись на картинку
gra.DrawString("www.microsoft.com", new Font("Verdana", 18), new SolidBrush(Color.Green), img.Width / 2, img.Height / 2);
return img;
}
}
Комментариев нет:
Отправить комментарий
Можете оставить свой комментарий