怎么将图片先转成缩略图再存入数据库中呢?
由于虚拟目录不允许写入,所以不能使用先将上传图片转成缩略图文件,
再将缩略图存入数据库中的办法。
望指教!在线等!

解决方案 »

  1.   

    http://www.aspxboy.com/private/218/default.aspx
      

  2.   

    System.Web.HttpPostedFile postedFile = files[0];
    string fileName,fileExtention ;
    fileName = System.IO.Path.GetFileName(postedFile.FileName);
    fileExtention = System.IO.Path.GetExtension(fileName).ToUpper();
    if (fileExtention.Trim()==".GIF"||fileExtention.Trim()==".JPG"||fileExtention.Trim()==".JPEG")
    { System.Drawing.Image image=System.Drawing.Image.FromStream(postedFile.InputStream);
    System.Drawing.Image thumbImage = image.GetThumbnailImage(image.Size.Width/2,image.Size.Height/2,null,System.IntPtr.Zero);

    System.IO.MemoryStream imageStream;
        imageStream=new System.IO.MemoryStream();

    image.Save(imageStream,image.RawFormat);

         int intLength=Convert.ToInt32(imageStream.Length);
                
             byte[] fileData = new byte[intLength];
    imageStream.Read(fileData,0,intLength);
         Response.Write(fileData[0].ToString()+"<br>" +intLength.ToString());

    OleDbConnection oleConn;
    string oleConnString;
    oleConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath + "/datadase_mydb/") + "db.mdb";
    oleConn = new OleDbConnection(oleConnString);
    System.Data.OleDb.OleDbCommand insertCmd;
    insertCmd=new OleDbCommand ("INSERT INTO DBOS_Sl (DBOS_Sl_Type,DBOS_Father_ID,DBOS_Sl_Qtype,DBOS_Sl_Data,DBOS_Sl_Qty)" + 
                            "VALUES (@Sl_Type,@Father_ID,@Sl_Qtype,@Sl_Data,@Sl_Qty)", oleConn);
    System.Data.OleDb.OleDbParameter pSl_Type = new OleDbParameter("@Sl_Type", System.Data.OleDb.OleDbType.VarChar,10);
    pSl_Type.Value="image";
    insertCmd.Parameters.Add(pSl_Type); System.Data.OleDb.OleDbParameter pSl_Father_ID = new OleDbParameter("@Father_ID",System.Data.OleDb.OleDbType.Integer);
    pSl_Father_ID.Value=123;
    insertCmd.Parameters.Add(pSl_Father_ID); System.Data.OleDb.OleDbParameter pSl_Qtype=new OleDbParameter("@Sl_Qtype",System.Data.OleDb.OleDbType.VarChar,4);
    pSl_Qtype.Value=image.RawFormat.ToString();
    insertCmd.Parameters.Add(pSl_Qtype); System.Data.OleDb.OleDbParameter pSl_Data = new OleDbParameter("@Sl_Data",System.Data.OleDb.OleDbType.Binary);
    pSl_Data.Value=fileData;
    insertCmd.Parameters.Add(pSl_Data); System.Data.OleDb.OleDbParameter pSl_Qty = new OleDbParameter("@Sl_Qty",System.Data.OleDb.OleDbType.Boolean);
    pSl_Qty.Value=false;
    insertCmd.Parameters.Add(pSl_Qty); oleConn.Open();
    insertCmd.ExecuteNonQuery();
    if (oleConn.State == ConnectionState.Open)
    {
    oleConn.Close();
    }
    Response.Write("<body onload=window.alert('数据提交成功!"+intLength.ToString() +"');></body>"); 
      

  3.   

    image.Save(imageStream,image.RawFormat);
    这一句改一下,thumbImage(imageStream,image.RawFormat);
      

  4.   

    我写的一个函数
    /// <summary>
            /// 上传图片缩略图
            /// </summary>
            /// <param name="postfile"> httpPostFile类型</param>
            /// <param name="maxWidth">缩略图最大宽度</param>
            /// <param name="imgExt">图片扩展名</param>
            /// <param name="filePath">要保存的绝对路径</param>
            /// <param name="fileName">要保存的文件名</param>
            /// <returns>bool</returns>
            public static bool upPicToSmall(System.Web.HttpPostedFile postfile,int maxWidth,string imgExt,string filePath,string fileName)
            {
                System.Drawing.Image img = null;
                try
                {
                    if(imgExt==".jpg"||imgExt==".gif")
                    {
                        img = System.Drawing.Image.FromStream(postfile.InputStream);                    if(img.Width>maxWidth)
                        {
                            int thisHeight = img.Height * maxWidth / img.Width;
                            img = img.GetThumbnailImage(maxWidth,thisHeight,null,IntPtr.Zero);
                        }                    switch(imgExt)
                        {
                            case ".jpg":
                                img.Save(filePath + fileName,System.Drawing.Imaging.ImageFormat.Jpeg);
                                break;
                            case ".gif":
                                img.Save(filePath + fileName,System.Drawing.Imaging.ImageFormat.Gif);
                                break;
                        }
                        img.Dispose();
                
                        return true;
                    }
                    else
                    {
                        Alert("上传文件格式不对!");
                        return false;
                    }
                }
                catch(Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
      

  5.   

    谢谢大家了,我的问题解决了!特别感谢misng(沦落人),
    顺便对misng(沦落人)说一下,
    imageStream.Read(fileData,0,intLength);
    前需加一句
    imageStream.position=0;  //否则写不到数组中去!
      

  6.   

    谢谢,昨天我也在找问题,我刚找到了imageStream.toArray();