Wednesday, November 01, 2006

Kako kroz ASP.Net prikazati slike iz Access baze?

Access pamti OLE objekte a ne slike u bazi pa svaka slika ima dodatni OLE header, koji je dužine 78bajtova (uvek?). Tih 78 bajtova treba skinuti da bi se dobila čista slika. Dalje, Access pamti slike u bmp formatu koji je prevelik za Internet. Zato je poželjno izvršiti konverziju, recimo u jpeg. Evo primera za ASP.Net 2.0. Predpostavka je da Select metod ObjectDataSource1 objekta vraća jedan slog u kome se nalazi polje "slika".

DataView dv = (DataView)ObjectDataSource1.Select();
byte[] b = (byte[])dv[0]["slika"];
MemoryStream ms = new MemoryStream(b, 78, b.Length - 78);
Image i = new Bitmap(ms);
Response.ContentType = "image/jpeg";
i.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.End();