Guardar imagen sin tener ruta de archivo en una base datos.

Iniciado por enterariel, 10 Agosto 2012, 17:10 PM

0 Miembros y 1 Visitante están viendo este tema.

enterariel

Utilizo este método para guardar una imagen una base datos access. me guarda perfectamente.

Código (vbnet) [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 (vbnet) [Seleccionar]
If Clipboard.GetDataObject.GetDataPresent("Bitmap") Then
PictureBox1.Image = CType(Clipboard.GetDataObject.GetData("Bitmap"), Bitmap)
End If


y no se como decirle aca en que ruta esta el archivo por que no esta en el disco.
Código (vbnet) [Seleccionar]
Dim fsreader As New FileStream("el-problema-esta-aca-que-poner", FileMode.Open, FileAccess.Read)

seba123neo

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.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

enterariel