将保存为BMP/JPG的SQL Server的PNG图片

问题描述:

我在我的SQL Server中有一个PNG图片,我成功获取图像并将其保存到文件。将保存为BMP/JPG的SQL Server的PNG图片

rs.Open "Select pic from Table", connObj, adOpenDynamic, adLockOptimistic 

If rs.RecordCount > 0 Then 
    If Not IsNull(rs.Fields("pic").Value) Then 
     Set mstream = New ADODB.Stream 
     mstream.Type = adTypeBinary 
     mstream.Open 
     mstream.Write rs.Fields("pic").Value 
     mstream.SaveToFile App.Path & "\MyPhoto.jpg", adSaveCreateOverWrite 
    End If 
End If 
rs.Close 

正如你可以看到我已经有我的分机为JPG格式,但我不认为它很重要,当我使用LoadPicture()我得到一个错误Invalid Picture使用图像在我的VB6应用程序。如果我打开图像并将其保存为JPG或BMP,LoadPicture()的作品。

那么,如何正确保存图片为bmp/jpg?

+1

你问如何从PNG格式转换为JPG格式? – DaveInCaz

您可能会发现有用

Private Function LoadPictureFromBlob(baData() As Byte) As StdPicture 
    With CreateObject("WIA.Vector") 
     .BinaryData = baData 
     Set LoadPictureFromBlob = .Picture 
    End With 
End Function 

Private Sub SavePictureToJpg(oPic As StdPicture, sFile As String, Optional ByVal Quality = 80) 
    Const wiaFormatJPEG As String = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" 
    Dim oImg   As Object 

    SavePicture oPic, sFile 
    Set oImg = CreateObject("WIA.ImageFile") 
    oImg.LoadFile sFile 
    With CreateObject("WIA.ImageProcess") 
     .Filters.Add .FilterInfos("Convert").FilterID 
     .Filters.Item(1).Properties("FormatID").Value = wiaFormatJPEG 
     .Filters.Item(1).Properties("Quality").Value = Quality 
     Set oImg = .Apply(oImg) 
    End With 
    On Error Resume Next 
    Kill sFile 
    On Error GoTo 0 
    oImg.SaveFile sFile 
End Sub 

只需使用Set oPic = LoadPictureFromBlob(rs.Fields("pic").Value)阅读.png,然后这两个函数或者使用内置的SavePicture oPic, App.Path & "\MyPhoto.bmp"保存到.bmpSavePictureToJpg oPic, App.Path & "\MyPhoto.jpg".jpg并决定可选的质量参数。