Foros del Web » Programación para mayores de 30 ;) » .NET »

Error en imagen en picturebox desde base de datos

Estas en el tema de Error en imagen en picturebox desde base de datos en el foro de .NET en Foros del Web. Muy buenas Tardes maestros de la programacion, y muchas gracias de antemano soy novato, estoy desarrollando una aplicacion en vb.net de registros de personal para ...
  #1 (permalink)  
Antiguo 20/01/2012, 16:22
 
Fecha de Ingreso: agosto-2009
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Error en imagen en picturebox desde base de datos

Muy buenas Tardes maestros de la programacion, y muchas gracias de antemano soy novato, estoy desarrollando una aplicacion en vb.net de registros de personal para ello necesito capturar la imagen desde una webcam y guardarla en Base de Datos SQL Server para luego mediante una consulta visualizar la foto en un picturebox.

Para capturar la imagen desde una webcam esta funcionando bien, el problema es cuando quiero visualizar una imagen que se guardo en base de datos. "El parametro no es valido - Excepción del tipo 'System.ArgumentException' en System.Drawing.dll"

No se en donde esta el problema derrepente en la manera en que guardo en la base de datos o en la manera como lo visualizo. Ya he buscado en internet pero aparentemente esta bien lo que hago, pero por alguna razon me sale ese error.

el campo de mi BD es FOTO de tipo Image.

Por favor cualquier comentario es bienvenido.

Utilizo las siguientes funciones para guardar y cargar la imagen esta dentro de una clase:

Option Strict On
Imports Microsoft.VisualBasic

Imports System.Data
Imports System.IO
Imports System.Drawing
Public Class n_imagen

' Métodos compartidos
Public Shared Function Image2Bytes(ByVal img As Image) As Byte()
Dim sTemp As String = Path.GetTempFileName()
Dim fs As New FileStream(sTemp, FileMode.OpenOrCreate, FileAccess.ReadWrite)
img.Save(fs, System.Drawing.Imaging.ImageFormat.Png)
' Cerrarlo y volverlo a abrir
' o posicionarlo en el primer byte
'fs.Close()
'fs = New FileStream(sTemp, FileMode.Open, FileAccess.Read)
fs.Position = 0
'
Dim imgLength As Integer = CInt(fs.Length)
Dim bytes(0 To imgLength - 1) As Byte
fs.Read(bytes, 0, imgLength)
fs.Close()
Return bytes
End Function

Public Shared Function Bytes2Image(ByVal bytes() As Byte) As Image
If bytes Is Nothing Then Return Nothing
'
Dim ms As New MemoryStream(bytes)
Dim bm As Bitmap = Nothing
Try
bm = New Bitmap(ms)
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
End Try
Return bm
End Function

End Class

Para guardar en BD utilizo el siguiente codigo:
.Parameters.Add(New SqlParameter("@IMAGEN", SqlDbType.Image, ParameterDirection.Input)).Value = n_image.Image2Bytes(imgCapture.Image)

Y para visualizar utilizo el siguiente codigo en el form:
If dat_per.Rows(0).Item(27) IsNot DBNull.Value Then
Dim img As Image = n_image.Bytes2Image(CType(dat_per.Rows(0).Item(27) , Byte()))
If img IsNot Nothing Then
Me.imgVideo.Image = img
End If
End If
  #2 (permalink)  
Antiguo 02/01/2014, 15:59
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Error en imagen en picturebox desde base de datos

Buenas noches a todos los foreros y especialmente a jhonnysoft82 que inicio este hilo. Me incorporo a este foro con la intención de adquirir mayores conocimientos sobre VB.Net. y plantear futuras cuestiones en mi aprendizaje.

Soy muy novato todavia y he tenido varias cuestiones que he resuelto de diversas formas, hasta la que a continuación expongo, que a pesar de haber visto bastante literatura googeleando, no he podido ni he sabido resolver.

Esta trata sobre el componente picturebox y especialmente al manejo de imagenes entre el picturebox y la tabla de la BBDD, que en mi caso es access 2012. Además la cuestion que planteo esta practicamente expuesta en el post de jhonnysoft82 ya que utilizo los mismos codigos, pero con resultado negativo ya que soy incapaz de trasladar la imagen de la Tabla al PictureBox.

Concretamente en:

Public Shared Function Bytes2Image(ByVal bytes() As Byte) As Image 'Pasar Campo de la Tabla a IMAGEN - Esta función lee la informacion de la Tabla y la pasa a imagen.
If bytes Is Nothing Then Return Nothing
Dim ms As New MemoryStream(bytes) ' El valor de bytes es 18140
Dim bm As Bitmap = Nothing
Try
bm = New Bitmap(ms) 'bm no presenta ningun valor. Se ejecuta la excepcion.
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
End Try
Return bm
End Function

Las librerias que utilizo son:

Imports Microsoft.VisualBasic
Imports System.Data.OleDb 'Importamos librerias para conexion de BD de Access.
Imports System.IO
Imports System.Drawing

Las extensiones de las imagenes/iconos son diversas, por ejemplo bmp, jpg, gif, png, etc. Entiendo que son tratables por ambas funciones sin mayor complicacion. Si no es asi ya me contaran posibles limitaciones.

Bueno, concluyo mi primer post en este foro, esperando no ser el ultimo, y quedo a la espera de vuestras respuestas para resolver el problema que actualemnte tengo.
Muchisimas gracias,
Recibid un cordial saludo.

Josép Miquel.

Etiquetas: net, picturebox, sql, vb, visual, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:23.