将位图存储到 sql
Storing bitmap into sql
我正在编写一个用于打印帐单的应用程序。我在加载数据时有一个表单。我想自动打印,所以按照这个顺序我保存了我填写的表格的 bmp 图像,然后存储到 mdf 数据库中用于后期打印每个 row/cell(在本例中为图像)。但是当我将我的 table 拖到预览表单中时(如果我正确存储数据只是为了 chek)每行的 id 出现,但我看不到该行的图像......问题是:我是什么这里做错了吗? (过去 3 天我看了很多教程,但我还不知道该怎么做)
Public Sub toBitMap()
'Define un nuevo bitmap con las dimensiones del form
Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
' Dibuja la imagen del form en un objetoBitmap
imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
Dim memoryStreamBuffer = New MemoryStream()
miBitMap.Save(memoryStreamBuffer, ImageFormat.Bmp)
Dim data As Byte() = memoryStreamBuffer.GetBuffer()
Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
Dim a As String = saveImage.insertImagen(data)
If multiple.iteraciones <= 0 Then
cantidad = saveImage.ScalarQuery()
End If
End Sub
感谢@Der Golem 和@Lars Tech (Plutonix) 的精彩回答。通过这种方式,我已经实现了一半的目标:
Public Sub toBitMap(ByVal indice)
'Define un nuevo bitmap con las dimensiones del form
Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
' Dibuja la imagen del form en un objetoBitmap
imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
'definicion de nombre y path para archivos temporales
Dim tempImageName As String = "tmp" & indice & ".png"
Dim tmpImageAbsolutePath As String = Application.StartupPath & _
"\data\" & tempImageName
'Creacion de nuevo png
miBitMap.Save(tmpImageAbsolutePath, ImageFormat.Png)
'Carga de paths a la base
Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
Dim a As String = saveImage.Insert(tempImageName)
If indice <= 1 Then
cantidad = saveImage.ScalarQuery()
End If
End Sub
现在我只清理 tmp 文件夹和数据库。
**只需要知道如何将这些文件(图片)转换为 pdf 进行打印,但我有 google! :D
我正在编写一个用于打印帐单的应用程序。我在加载数据时有一个表单。我想自动打印,所以按照这个顺序我保存了我填写的表格的 bmp 图像,然后存储到 mdf 数据库中用于后期打印每个 row/cell(在本例中为图像)。但是当我将我的 table 拖到预览表单中时(如果我正确存储数据只是为了 chek)每行的 id 出现,但我看不到该行的图像......问题是:我是什么这里做错了吗? (过去 3 天我看了很多教程,但我还不知道该怎么做)
Public Sub toBitMap()
'Define un nuevo bitmap con las dimensiones del form
Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
' Dibuja la imagen del form en un objetoBitmap
imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
Dim memoryStreamBuffer = New MemoryStream()
miBitMap.Save(memoryStreamBuffer, ImageFormat.Bmp)
Dim data As Byte() = memoryStreamBuffer.GetBuffer()
Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
Dim a As String = saveImage.insertImagen(data)
If multiple.iteraciones <= 0 Then
cantidad = saveImage.ScalarQuery()
End If
End Sub
感谢@Der Golem 和@Lars Tech (Plutonix) 的精彩回答。通过这种方式,我已经实现了一半的目标:
Public Sub toBitMap(ByVal indice)
'Define un nuevo bitmap con las dimensiones del form
Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height)
' Dibuja la imagen del form en un objetoBitmap
imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height))
'definicion de nombre y path para archivos temporales
Dim tempImageName As String = "tmp" & indice & ".png"
Dim tmpImageAbsolutePath As String = Application.StartupPath & _
"\data\" & tempImageName
'Creacion de nuevo png
miBitMap.Save(tmpImageAbsolutePath, ImageFormat.Png)
'Carga de paths a la base
Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter
Dim a As String = saveImage.Insert(tempImageName)
If indice <= 1 Then
cantidad = saveImage.ScalarQuery()
End If
End Sub
现在我只清理 tmp 文件夹和数据库。
**只需要知道如何将这些文件(图片)转换为 pdf 进行打印,但我有 google! :D