ashx源文件代码:

<%@ WebHandler Language="C#" Class="GetThumbnailImageByEmpCode" %>using System;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Drawing.Imaging;public class GetThumbnailImageByEmpCode : IHttpHandler
{public void ProcessRequest(HttpContext context){if (context.Request.QueryString["code"] == null){return;}int newWidth = 336;         //目标图片宽度int newHeight = 252;        //目标图片高度bool bNeedUpdate = false;   //是否需要更新数据库System.Drawing.Image Img;using (SqlConnection conn = new SqlConnection(db.ConnectionStrings.hrConnectionString))using (SqlCommand cmd = new SqlCommand("", conn)){cmd.CommandText = "select photo from ZlEmployee where code=@code and DATALENGTH(photo)>1000";cmd.Parameters.AddWithValue("code", context.Request.QueryString["code"]);conn.Open();SqlDataReader reader = cmd.ExecuteReader();if (reader.Read()){byte[] imgData = (byte[])reader[0];reader.Close();using (MemoryStream ms = new MemoryStream(imgData)){Img = System.Drawing.Image.FromStream(ms);}if (Img.Width > newWidth || Img.Height > newHeight){Img = reSizeImage(Img);bNeedUpdate = true;}using (MemoryStream ms = new MemoryStream()){#region 输出图片到浏览器Bitmap jpg = new Bitmap(Img);jpg.Save(ms, ImageFormat.Jpeg);context.Response.Clear();context.Response.Charset = "utf-8";context.Response.ContentType = "image/pjpeg";context.Response.BinaryWrite(ms.ToArray());#endregion//检查是否需要更新if (bNeedUpdate){cmd.CommandText = "update ZlEmployee set photo=@photo where code=@code";cmd.Parameters.Clear();cmd.Parameters.AddWithValue("code", context.Request.QueryString["code"]);cmd.Parameters.AddWithValue("photo", ms.ToArray());cmd.ExecuteNonQuery();}}context.Response.End();}}}public System.Drawing.Image reSizeImage(System.Drawing.Image img){int newWidth = 336;int newHeight = 252;//如果是高度大于宽度则按竖图处理,宽小于高if (img.Height > img.Width){newWidth = 252;newHeight = 336;}#region 计算按比例缩放的图片尺寸if (img.Height / img.Width > newHeight / newWidth){newWidth = newHeight * img.Width / img.Height;}else{newHeight = img.Height * newWidth / img.Width;}#endregion#region 缩放图片using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)newWidth, (int)newHeight, PixelFormat.Format32bppArgb)) //using   3 {using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap)){//清除整个绘图面并以透明背景色填充 graphics.Clear(Color.Transparent);//在指定位置并且按指定大小绘制   原图片   对象 graphics.DrawImage(img, new Rectangle(0, 0, (int)newWidth, (int)newHeight));using (MemoryStream ms = new MemoryStream()){bitmap.Save(ms, ImageFormat.Jpeg);return System.Drawing.Image.FromStream(ms);}}}#endregion}public bool IsReusable{get{return false;}}
}

转载于:https://www.cnblogs.com/apollokk/archive/2012/10/06/6713926.html

C#读取数据库图片显示、缩小、更新相关推荐

  1. .net 数据存储 mysql_asp.net实现存储和读取数据库图片

    本文实例为大家分享了asp.net存储和读取数据库图片的具体代码,供大家参考,具体内容如下 1. 创建asp.net web窗体项目 代码如下: 上传图片 展示图片 效果图如下: 2. 创建数据库 数 ...

  2. python中npz文件读取和图片显示

    python中npz文件读取和图片显示 1. npz文件读取 1.1 读入 1.2 大小 2. 读取图片 1. npz文件读取 1.1 读入 from PIL import Image import ...

  3. emwin从外部flash中读取bmp图片显示

    在emwin中有提供了一个从外部读取图片数据进行显示的函数,如下: 而且提供了官方例程,不过官方历程中从外部读取是从外部文件系统中进行读取的bmp图片进行显示,官方例程如下 /* ********** ...

  4. java 读取数据库图片二进制流并输出到jsp页面

    最近刚好遇到这个问题,刚开始在网上各种搜索,看到大量有关该问题的博文. 大量文章有些不敢苟同,希望博主们要写就认真写,请不要浪费其他需要帮助的人的时间去验证你的博文是否正确. 正文如下: 流程说明: ...

  5. 【紫光同创国产FPGA教程】【第十四章】SD卡读取BMP图片显示例程

    本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com). 1. 实验简介 在前面的实验中我们练习了SD卡读 ...

  6. PHP读取数据库表显示到前台

    <?php$username=$_GET['uid']; //获取一个值作为查询条件 $result=$db->query("select * from trip where a ...

  7. C#将数据库图片显示在pictureBox

    这里的图片存在数据表的形式为十六进制的数据,参数ds为从数据库中选出的DataSet,字段FImage为图片字段. private void getPicture(DataSet ds)        ...

  8. php查询mysql数据库输出到前台_PHP读取数据库表显示到前台

    $username=$_GET['uid']; //获取一个值作为查询条件 $result=$db->query("select * from trip where author='& ...

  9. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    1 //浏览图片 2 3 private void btnUp_Click(object sender, EventArgs e) 4 5 { 6 7 OpenFileDialog ofd = new ...

最新文章

  1. LeetCode 125 Valid Palindrome(有效回文)(*)
  2. 依图又斩获10冠!AI芯片拿下创新技术大奖,朱珑再谈智能密度
  3. 亲历dataguard的一些经验问答题
  4. VTK:vtkDelaunay2D用法实战
  5. 【learning】快速沃尔什变换FWT
  6. windows 的一些快捷键
  7. mysql ansi unicode_Ansi 与 Unicode 字符串类型的互相转换
  8. JAVA版村庄哨塔种子_我的世界:5个稀有的地图种子,我在里面居然发现了圆形村庄!...
  9. 气溶胶反演输入转化错误_暗目标法的Himawari-8静止卫星数据气溶胶反演
  10. python文本文件加密_Python 文本加密解密 中文TXT数据
  11. 计算机打字盲打方法,练习键盘打字方法 盲打的指法练习
  12. 联盛德 HLK-W806 (七): 兼容开发板 LuatOS Air103
  13. 帝国cms7.2通过数据库修改用户密码
  14. 计算机对操作系统函数的调用失败,解决win7提示“远程过程调用失败且未执行”的方案...
  15. 华硕T100 安装linux,华硕T100重装win10系统教程
  16. 道路交通事故现场计算机制图,GA 49-2014_道路交通事故现场图绘制.pdf 文档全文预览...
  17. 商品详情页商品属性选择,包含多规格
  18. java 吸血鬼数字_JAVA_吸血鬼数字 多种方法实现
  19. Sqlmap 22.05.22.02
  20. 【win10】win10下两个显示器不同桌面壁纸

热门文章

  1. hbase查看表结构_HBase
  2. mysql语句大全 新浪博客_MySQL语句入门
  3. 允许用户把多个作业同时提交给计算机,2005年7月操作系统试题和答案
  4. barplot参数 python_Python零基础入门Python数据分析最好的实战项目
  5. 初始化组合框CComboBox
  6. vs code配置python环境mac_mac vscode Python配置
  7. labview波形图两个游标,LabVIEW数据可视化:使用波形图表控件逐点显示曲线的方法...
  8. MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
  9. webgl之3d动画
  10. AJAX服务器返回数据 连接数据库查询数据