Visual Basic Foro

Programación => Visual Basic .NET / C# => Mensaje iniciado por: E N T E R en Agosto 10, 2012, 12:03:26 pm

Título: Guardar imagen en una base datos.
Publicado por: E N T E R en Agosto 10, 2012, 12:03:26 pm
Utilizo este método para guardar una imagen una base datos access. me guarda perfectamente.

Código: (VB) [Seleccionar]
        Dim fsreader As New FileStream("c:\carpeta\foto1.jpg", FileMode.Open, FileAccess.Read)
        Dim breader As New BinaryReader(fsreader)
        Dim imgbuffer(fsreader.Length) As Byte
        breader.Read(imgbuffer, 0, fsreader.Length)
        fsreader.Close()
        'closes the current stream and releases any resources

        strSQL = "INSERT INTO juegos (titulo,imagen) values (@titulo,@imagen)"
        strComando.CommandText = strSQL
        strComando.Connection = strConexion

        strComando.Parameters.AddWithValue("@titulo", "nuevo metodo")
        strComando.Parameters.AddWithValue("@imagen", imgbuffer)
        strComando.ExecuteNonQuery()
        strComando.Dispose()
        MsgBox("Saved")

Pero ahora surgió un problemita. tengo un PictureBox en donde le pego el contenido del Clipboard.

Código: (VB) [Seleccionar]
        If Clipboard.GetDataObject.GetDataPresent("Bitmap") Then
            PictureBox1.Image = CType(Clipboard.GetDataObject.GetData("Bitmap"), Bitmap)
        End If

y no se como decirle aca
Código: (VB) [Seleccionar]
Dim fsreader As New FileStream("el-problema-esta-aca-que-poner", FileMode.Open, FileAccess.Read) la dirección del archivo.
Título: Re:Guardar imagen en una base datos.
Publicado por: seba123neo en Agosto 10, 2012, 12:25:33 pm
es que FileStream solo te convierte a Stream una imagen del disco, no lo deberias usar, ya que te limita a solo cargar imagenes del disco. deberias usar MemoryStream, que ese te covierte a Stream lo que haya en el Picturebox independientemente como hayas cargado la imagen.

entonces despues no tendrias que usar FileStream, directamente al cargar la imagen (ya sea desde el disco con la propiedad .Load del picturebox o desde el clipboard) la imagen que contenga se va a convertir en Stream (que despues se la pasas al BinaryReader).

Código: (vbnet) [Seleccionar]
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As New MemoryStream()
        PictureBox1.Image.Save(i, System.Drawing.Imaging.ImageFormat.Jpeg) ' aca guardas la imagen del picture a Stream

        Dim breader As New BinaryReader(i) ' aca sigue tu codigo...
    End Sub
End Class

saludos.

Título: Re:Guardar imagen en una base datos.
Publicado por: E N T E R en Agosto 10, 2012, 05:05:01 pm
Gracias, Seba funciono de lujo

Saludos...