利用图片生缩略图后是否应该将什么给释放掉,不然原图片删除不掉,究竟应该如何释放原图片,给端代码吧!
image = System.Drawing.Image.FromFile(Server.MapPath("") & "\photo1\" & b) 'b中记录有图片 的名称
newimage = image.GetThumbnailImage(232, 232, callb, New System.IntPtr) '生成缩略图

解决方案 »

  1.   

    image.Dispose();
    newimage.Dispose();
      

  2.   

    这两句程序我写上了啊?
    源程序是这样的:
      Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           Dim a As String = Trim(Request.QueryString("ID").ToString())  '传递的record_id        If Page.IsPostBack = False Then
                Dim callb As System.Drawing.Image.GetThumbnailImageAbort
                Dim newimage As System.Drawing.Image
                Dim image As System.Drawing.Image            Try
                    Dim mpath As String
                    Dim b As String
                    Dim mydataset2 As New DataSet
                    Dim myconnection As SqlClient.SqlConnection
                    myconnection = connect2sqlserver()
                    Dim mydataadapter2 As SqlClient.SqlDataAdapter
                    Dim strsql2 As String = "select photo1 from photo_tab where record_id='" & a & "'"
                    mydataadapter2 = New SqlClient.SqlDataAdapter(strsql2, myconnection)
                    mydataset2.Clear()
                    mydataadapter2.Fill(mydataset2)
                    If IsDBNull(CStr(mydataset2.Tables(0).Rows(0).Item(0))) = False And Trim(CStr(mydataset2.Tables(0).Rows(0).Item(0))) <> "" Then
                        b = Trim(CStr(mydataset2.Tables(0).Rows(0).Item(0)))
                        image = System.Drawing.Image.FromFile(Server.MapPath("") & "\photo1\" & b)
                        newimage = image.GetThumbnailImage(232, 232, callb, New System.IntPtr)
                        '建立署虚拟路径,以正确显示缩略图
                        mpath = Server.MapPath("uppicture")
                        newimage.Save(Server.MapPath("uppicture\" & b))  '保存缩略图
                        Image1.ImageUrl = "uppicture/" + b
                    End If
                    image.Dispose()
                    newimage.Dispose()
                Catch ex As Exception
                End Try
            End If
        End Sub    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Try            Dim a As Date
                a = Now
                Dim myconnection As SqlClient.SqlConnection
                myconnection = connect2sqlserver()
                myconnection.Open()
                Dim mycommand As New SqlClient.SqlCommand
                mycommand.Connection = myconnection
                Dim myReader As SqlClient.SqlDataReader
                Dim filepath, fileclass As String            Dim strsql1 As String
                Dim mydataadapter As SqlClient.SqlDataAdapter
                Dim mydataset As New DataSet
                '覆盖旧的图片
                '先将新图片更新注册进数据库
                strsql1 = "SELECT photo1,photo2,photo3,photo4 FROM photo_tab WHERE record_id='" + Trim(Request.QueryString("ID").ToString()) + "'"
                mydataadapter = New SqlClient.SqlDataAdapter(strsql1, myconnection)
                mydataset.Clear()
                mydataadapter.Fill(mydataset)            If File1.PostedFile.FileName.Trim.Equals("") = False Then
                    strsql1 = "UPDATE photo_tab SET record_date='" & a & "',photo1='" + Path.GetFileName(File1.PostedFile.FileName) + "' WHERE record_id='" + Trim(Request.QueryString("ID").ToString()) + "'"
                    mycommand.CommandText = strsql1
                    mycommand.ExecuteNonQuery()
                    '不管原来有无图片,先删除掉原图片,再加入新图片
                    Dim p As IO.File'执行到这一句出错:“进程无法访问该文件,该文件正被另一个进程访问”                p.Delete(Server.MapPath("") + "\photo1\" + Trim(mydataset.Tables(0).Rows(0).Item(0)))
                    Dim aaa As String = Path.GetFileName(File1.PostedFile.FileName).Substring(0, Path.GetFileName(File1.PostedFile.FileName).Length - 4)
                    fileclass = Mid(File1.PostedFile.FileName, InStrRev(File1.PostedFile.FileName, "."), Len(File1.PostedFile.FileName))
                    filepath = Server.MapPath("") + "\photo1\" + aaa + fileclass
                    File1.PostedFile.SaveAs(filepath)
                End If            '刷新缩略图片
                Dim callb As System.Drawing.Image.GetThumbnailImageAbort
                Dim newimage As System.Drawing.Image
                Dim image As System.Drawing.Image            Dim mpath As String
                Dim b As String
                Dim mydataset2 As New DataSet            Dim mydataadapter2 As SqlClient.SqlDataAdapter
                Dim strsql2 As String = "select photo1 from photo_tab where record_id='" & Trim(Request.QueryString("ID").ToString()) & "'"
                mydataadapter2 = New SqlClient.SqlDataAdapter(strsql2, myconnection)
                mydataset2.Clear()
                mydataadapter2.Fill(mydataset2)
                If IsDBNull(CStr(mydataset2.Tables(0).Rows(0).Item(0))) = False And Trim(CStr(mydataset2.Tables(0).Rows(0).Item(0))) <> "" Then
                    b = Trim(CStr(mydataset2.Tables(0).Rows(0).Item(0)))
                    image = System.Drawing.Image.FromFile(Server.MapPath("") & "\photo1\" & b)
                    newimage.Save(Server.MapPath("uppicture\" & b))  '保存缩略图
                        Image1.ImageUrl = "uppicture/" + b
                    End If            image.Dispose()
                newimage.Dispose()            Label1.Text = "更新覆盖成功!"
            Catch ex As Exception
                Label1.Text = "更新覆盖失败!"
            End Try
        End Sub
      

  3.   

    Button3_Click事件是为了更新新的图片,程序中需要更新数据库中的图片名称、删除旧图片和上传新图片,可是删除旧图片时就会出错:“该进程无法访问文件,该进程正被另一个进程访问”