Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: enterariel en 10 Agosto 2012, 17:10 PM

Título: Guardar imagen sin tener ruta de archivo en una base datos.
Publicado por: enterariel en 10 Agosto 2012, 17:10 PM
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)
Título: Re: Guardar imagen sin tener ruta de archivo en una base datos.
Publicado por: seba123neo en 10 Agosto 2012, 17:27 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 sin tener ruta de archivo en una base datos.
Publicado por: enterariel en 10 Agosto 2012, 22:04 PM
Gracias, Seba funciono de lujo

Saludos...