博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gridview 读取数据库图片并 改变大小(图片处理)
阅读量:5812 次
发布时间:2019-06-18

本文共 4948 字,大约阅读时间需要 16 分钟。

本例是model使用LINQ写的,数据库SQLserver,解决了数据库累心转换的麻烦问题。同时,通过函数的调用,使得数据库图片读取之后,可以虽数据值的改变,按着比例改变图片的大小。数据库的存储是,图片上传之后,使用二进制存储。感谢abe的指导和帮助。

LINQ 的model

 

Code private Binary _image;         [Column(Storage ="_image", DbType ="varbinary")]         public Binary image         {
get {
returnthis._image; } set {
this._image = value; } }

 

DAL层数据的读取。通过产品的分类。读取相应的产品。

 

Code ///         /// Get all the products by classify         ///         ///         ///
public List
GetSomeCProducts(string classify ) {
var pspInfo = from u in db.Products where u.classification == classify orderby u.lastMTime select u; return pspInfo.ToList
(); }

 

Gridview前台代码的设置。没什么好讲的。模板列的使用大家都很熟悉。

 

Code 

 

后台代码简要说明一下。由于数据库是存储的二进制,而Gridview的机制是使用ImageUrl才能读取,所以我们必须读取出来,存到一个缓存中,然后把缓存的URL给Gridview才能够显示图片。。。。CreateImage是把二进制的转换成Image格式,而下面的那个函数是,对图片自定义大小和背景颜色而后显示。因为图片大小不一定能满足你原有的比例,裁剪之后不一定合适,最后有背景颜色进行填充最好。。最后一个函数是Gridview的分页。

Code privatevoid InitProductsList()         {
string prodInfo =string.Empty; //分类的名称。和数据库里面的classify对应。 prodInfo ="psp"; BLOProducts blp =new BLOProducts(); productsList.DataSource = blp.GetProInfo(prodInfo); productsList.DataBind(); } /// /// DataBound /// /// /// protectedvoid List_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
string prodInfo =string.Empty; if (e.Row.RowIndex <0) return; string strPersonName = (string)DataBinder.Eval(e.Row.DataItem, "filename"); System.Web.UI.WebControls.Image tmp_Image = (System.Web.UI.WebControls.Image)e.Row.Cells[2].FindControl("Image1"); if (!System.Convert.IsDBNull(DataBinder.Eval(e.Row.DataItem, "image"))) {
byte[] photo = (DataBinder.Eval(e.Row.DataItem, "image") as Binary).ToArray(); System.Drawing.Image img = CreateImage(photo); System.Drawing.Image aPhoto = CreateThumb(img, 60, 60, Color.Purple); string strPath ="~/images/"+ strPersonName.Trim() +".JPG"; string strPhotoPath = Server.MapPath(strPath); //保存图片文件 aPhoto.Save(strPhotoPath); tmp_Image.ImageUrl = strPath; } } } protected System.Drawing.Image CreateImage(Byte[] pBytes) {
MemoryStream aStream =new MemoryStream(pBytes); System.Drawing.Image rImg = System.Drawing.Image.FromStream(aStream); aStream.Close(); return rImg; } protected System.Drawing.Image CreateThumb(System.Drawing.Image pSource, int pWidth, int pHeight, Color pBkColor) {
int aWidth = pSource.Width; int aHeight = pSource.Height; double xScale = (aWidth *1.0) / pWidth; double yScale = (aHeight *1.0) / pHeight; double mScale = xScale; bool fitX =true; if (yScale > xScale) {
mScale = yScale; fitX =false; } int offset =0; if (fitX) offset = (int)(pHeight - aHeight / mScale) /2; else offset = (int)(pWidth - aWidth / mScale) /2; int rWidth = (int)(aWidth / mScale); int rHeight = (int)(aHeight / mScale); System.Drawing.Image rImg =new Bitmap(pWidth, pHeight); Graphics aGC = Graphics.FromImage(rImg); aGC.Clear(pBkColor); if (fitX) {
int x =0; int y = offset; aGC.DrawImage(pSource, x, y, rWidth, rHeight); } else {
int x = offset; int y =0; aGC.DrawImage(pSource, x, y, rWidth, rHeight); } return rImg; } /// /// PageChanging /// /// /// protectedvoid List_PageIndexChanging(object sender, GridViewPageEventArgs e) {
productsList.PageIndex = e.NewPageIndex; InitProductsList(); }

 


          

 

            作者:

      出处:
本文版权归作者和博客园共有,欢迎转载,转载请注明。并且保留文章链接。否则保留追究法律责任的权利。

分类: 
 

转载于:https://www.cnblogs.com/woshare/archive/2012/08/09/2630685.html

你可能感兴趣的文章
真正努力的人,从来不焦虑
查看>>
Lua语言特色
查看>>
vscode忽略node_module
查看>>
C#泛型-什么是泛型
查看>>
regsvr32.exe进程注册dll文件
查看>>
C# 单机Window 程序 sqlite 数据库实现
查看>>
JS学习随笔
查看>>
JavaScript一些函数
查看>>
国务院关于积极推进“互联网+”行动的指导意见
查看>>
Matrix Factorization, Algorithms, Applications, and Avaliable packages
查看>>
图像配准转换
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
iOS人脸识别核心代码(备用)
查看>>
基本概念复习
查看>>
C++:成员运算符重载函数和友元运算符重载函数的比较
查看>>
[Polymer] Introduction
查看>>
【iCore3 双核心板】例程三十:U_DISK_IAP_FPGA实验——更新升级FPGA
查看>>
前端技术的发展和趋势
查看>>