ASP.NET使用数据库存储、读取并修改图片

在SQL SERVER中建立这样结构的一个表:

列名类型目的
IDInteger主键ID
IMGTITLEVarchar(50)图片的标题
IMGTYPEVarchar(50)图片类型. ASP.NET要以辨认的类型
IMGDATAImage用于存储二进制数据

 

==============================================================================================     using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Data.SqlClient;
using System.IO;

public partial class ChangeImageSize : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

        private int width;
        private int height;
        private Bitmap newpic, savepic;
        private float k1, k2;

        /// <summary>
        /// 构造函数
        /// </summary>
        public ChangeImageSize()
        {
        }
              

        /// <summary>
        /// 传入一张图片,并设定它的大小
        /// </summary>
        /// <param name="TheImage">传入的图片对象</param>
        /// <param name="TheWidth">图片宽的范围</param>
        /// <param name="TheHeight">图片长的范围</param>
        /// <param name="path">保存的文件名和路径</param>
        public Bitmap ChangePicMethod(object TheImage, int TheWidth, int TheHeight)
        {
            newpic = new Bitmap((System.Drawing.Image)TheImage);
            this.width = newpic.Width;
            this.height = newpic.Height;

            k1 = (float)width / (float)TheWidth;
            k2 = (float)height / (float)TheHeight;
            if (k1 > k2)
            {
                this.width = (int)(width / k1);
                this.height = (int)(height / k1);
            }
            else
            {
                this.width = (int)(width / k2);
                this.height = (int)(height / k2);
            }
            savepic = new Bitmap(newpic, width, height);
            return savepic;
            //savepic.Save(@path);
        }

    /// <summary>
    /// 保存图片到数据库
    /// </summary>
    /// <returns></returns>
        private bool StoreImage()
        {
            bool rs = false;
            Stream imgdatastream = this.FileUpload1.PostedFile.InputStream;
            int imgdatalen = this.FileUpload1.PostedFile.ContentLength;
            string imgtype = this.FileUpload1.PostedFile.ContentType;
            string imgtitle =FileUpload1.PostedFile.FileName;
            // byte[] imgdata = new byte[imgdatalen];
            //int n = imgdatastream.Read(imgdata, 0, imgdatalen);
            //Bitmap bp = ChangePicToSaveMethod(imgdatastream, 200, 200);
           
            MemoryStream ms = new MemoryStream();
            Bitmap bp = new Bitmap(imgdatastream);
            bp = ChangePicMethod(bp, 200, 200);
            //bp=bp.GetThumbnailImage(200,200,new System.Drawing.Image.GetThumbnailImageAbort(aa()) ,System.IntPtr.Zero);
            bp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            ms.Flush();
            byte[] imgdata = ms.GetBuffer();
            ms.Close();  

            SqlConnection connection = Connection.getConnection();
            SqlCommand command = new SqlCommand("INSERT INTO ImageStore(ImageTitle,ImageType,ImageData)VALUES ( @imgtitle, @imgtype,@imgdata )", connection);

            SqlParameter paramTitle = new SqlParameter("@imgtitle", SqlDbType.VarChar, 50);

            paramTitle.Value = imgtitle;
            command.Parameters.Add(paramTitle);

            SqlParameter paramData = new SqlParameter("@imgdata", SqlDbType.Image);
            paramData.Value = imgdata;
            command.Parameters.Add(paramData);

            SqlParameter paramType = new SqlParameter("@imgtype", SqlDbType.VarChar, 50);
            paramType.Value = imgtype;
            command.Parameters.Add(paramType);

            connection.Open();
            int numRowsAffected = command.ExecuteNonQuery();
            connection.Close();
            rs = true;
            return rs;
        }
    /// <summary>
    /// 从数据库取出图片
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
        private void GetImage(string imgid)
        {
            string sql = "SELECT ImageData, ImageType FROM ImageStore WHERE ID = " + imgid;
            SqlConnection connection = Connection.getConnection();
            SqlCommand command = new SqlCommand(sql, connection);
            connection.Open();
            SqlDataReader dr = command.ExecuteReader();
            if (dr.Read())
            {
                Response.ContentType = dr["ImageType"].ToString();
                Response.BinaryWrite((byte[])dr["ImageData"]);
            }
            connection.Close();

        }

 

}

转载于:https://www.cnblogs.com/carekee/articles/2083425.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana 使用教程 --- 开源的度量分析与可视化套件

原文链接&#xff1a;https://blog.csdn.net/bbwangj/article/details/81109615 Linux下使用GrafanaInfluxDBMongoDB实现爬虫可视化动态监控【附代码及详细教程】 https://www.jianshu.com/p/9de223e05a5e Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间…

美国重夺超算“头把交椅”,专家建议中国加快E级超算研制

“顶点”超算 橡树岭国家实验室网站图来源&#xff1a;科技日报摘要&#xff1a;美国能源部下属橡树岭国家实验室6月8日正式宣布&#xff0c;已研发出被命名为“顶点”的超级计算机。美国能源部下属橡树岭国家实验室6月8日正式宣布&#xff0c;已研发出被命名为“顶点”的超级计…

安卓逆向_9 --- log 插桩、Toast 弹窗、smali代码编写和植入 ( 好搜小说 )

From&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p36 如果仅仅用 Smali 来分析代码&#xff0c;效果其实不如用 dex2jar 和 jd-gui 更直观&#xff0c;毕竟看反编译的 java 代码要更容易一些。 但 Smali 强大之处就是可以随心所欲的进行插桩操作。何为插桩&…

调试opengl程序出错

今天要做opengl实验 打开一个示例程序&#xff0c;结果编译不过。错误大概如下&#xff1a; d:\vc98\include\gl\gl.h(1152) : error C2054: expected ( to follow WINGDIAPI d:\vc98\include\gl\gl.h(1152) : error C2085: APIENTRY : not in formal parameter list d:\vc98\i…

代码精进之路~函数

职责单一 一个方法只做一件事情。 eg.给员工发工资 public void pay(List<Employee> employees) {for (Employee e : employees) {if (e.isPayDay()) {Money pay e.calculateDay();e.deliverDay(pay);}}} 实际上做了3件事&#xff1a;遍历所有雇员、检查是否该发工资…

智能哲学:“学习机器”与“机器学习” ——解读图灵思想中的人工智能

周剑铭&#xff0c;自由学者。研究方向为中西文化比较研究&#xff0c;智能哲学&#xff0c;算法、不确定性和不确定性问题(NP)理论。柳渝&#xff0c;法国儒勒凡尔纳公立综合大学计算机&#xff08;Dpartement Informatique, UFR des Sciences, Universit de Picardie Jules V…

【分享】关于对象关系映射的理解

对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM&#xff09;是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说&#xff0c;ORM是通过使用描述对象和数据库之间映射的元数据&#xff0c;将java程序中的对象自动持久化到关系数…

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

From&#xff1a;https://blog.csdn.net/weixin_42680210/article/details/90384358 在安卓逆向中&#xff0c;常常用到 栈跟踪、toast方法、Log日志的插入 等&#xff0c;以便于我们更好的分析代码&#xff0c;下面就演示下这三个方法的使用及简单的分析。。。 1. 插入 Log 信…

事实--思维导图笔记

事实--思维导图笔记 https://www.processon.com/view/5d330846e4b058ef96ae5529?fromnew1#map 完整版

未来20年内,无人驾驶将颠覆这33大行业

来源&#xff1a;智车科技在未来的20年里&#xff0c;无人驾驶汽车将在美国广泛使用&#xff0c;这几乎是必然的。包括谷歌、苹果和梅赛德斯-奔驰在内的二十多家大型企业都在努力打造自己的无人驾驶汽车品牌。特斯拉的Model S已经推出了一种可以在高速公路上形式的无人驾驶车型…

C# GridView单元格合并.

使用int[] 列索引集合将第1列的单元格格一样的数据合并..GroupRows(GridView1,newint[]{0}); 全部代码///<summary>///GridView合并行 zgkesina.com qq:116149///</summary>///<param name"p_GridView">Grid控件</param>///<param name&q…

安卓逆向_11 --- methodprofiling(方法分析)【在 smali 代码中打印信息 --- 协议分析常用】

From【修改 smali 代码打印信息】&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p38 【Android】开发优化之 --- 调优工具&#xff1a;TrackView、Method Profiling&#xff1a;https://blog.csdn.net/fcly2013/article/details/38080333 TrackView、Method Prof…

Getting Started with Google Guava--思维导图笔记

Getting Started with Google Guava--思维导图笔记 分享地址&#xff1a;https://www.processon.com/view/link/5d413527e4b020861117eb7b

德国科学院院士:传统企业寻求变革,向智能制造靠近

来源&#xff1a;亿欧摘要&#xff1a;中新人工智能高峰论坛上&#xff0c;德国科学院院士汉斯乌思克尔特详细介绍了AI在工业上的概念和具体运用案例。他把“AI工业”原理分为三层&#xff0c;由内到外分别是&#xff1a;生产层、运行层和数据结合层。经由这三层&#xff0c;智…

kernel部分数据结构列表三(inode)

kernel部分数据结构列表三(inode) /**索引节点对象由inode结构体表示&#xff0c;定义文件在linux/fs.h中*/struct inode { struct hlist_node i_hash; /* 哈希表 */ struct list_head i_list; /* 索引节点链表 */ …

安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)

From&#xff1a;https://www.52pojie.cn/forum.php?modviewthread&tid742250 jeb 动态调试 smali 代码&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p39 使用 JEB 调试 Android App&#xff1a;https://www.jianshu.com/p/a1a7cf687cd2 了解 JEB 和 IDA 使…

Hamcrest总结--思维导图

来源&#xff1a;https://blog.csdn.net/neven7/article/details/42489723 思维导图&#xff1a;https://www.processon.com/view/link/5da81f53e4b09df55016b55d

机器学习应用的未来是什么?微型化

作者 | Pete Warden编译 | 专知翻译 | Yongxi, Huaiwen数据科学家&#xff0c;Jetpac 公司CTO Pete Warden发表了一篇博文&#xff0c;详细阐述了微型化是机器学习应用的一条出路&#xff0c;并且相信机器学习可以在微小的、低功耗的芯片上运行&#xff0c;利用深度学习可以做到…

使用flot绘图出现window.G_vmlCanvasManager is null or not an Object

使用flot绘图出现window.G_vmlCanvasManager is null or not an Object导致ie无法绘图在firefox上不会报错解决办法是在加载jquery.flot.js之前先加载excanvas.js转载于:https://www.cnblogs.com/JerryWang1991/archive/2011/07/06/3936395.html

Python 爬虫 性能 相关( asyncio 模块 --- 高性能爬虫 )

From&#xff1a;https://www.cnblogs.com/bravexz/p/7741633.html 爬虫应用 asyncio 模块 ( 高性能爬虫 )&#xff1a;https://www.cnblogs.com/morgana/p/8495555.html python异步编程之asyncio&#xff08;百万并发&#xff09;&#xff1a;https://www.cnblogs.com/shenh…