Foro de elhacker.net

Programación => .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
  1. Dim fsreader As New FileStream("c:\carpeta\foto1.jpg", FileMode.Open, FileAccess.Read)
  2. Dim breader As New BinaryReader(fsreader)
  3. Dim imgbuffer(fsreader.Length) As Byte
  4. breader.Read(imgbuffer, 0, fsreader.Length)
  5. fsreader.Close()
  6. 'closes the current stream and releases any resources
  7.  
  8. strSQL = "INSERT INTO juegos (titulo,imagen) values (@titulo,@imagen)"
  9. strComando.CommandText = strSQL
  10. strComando.Connection = strConexion
  11.  
  12. strComando.Parameters.AddWithValue("@titulo", "nuevo metodo")
  13. strComando.Parameters.AddWithValue("@imagen", imgbuffer)
  14. strComando.ExecuteNonQuery()
  15. strComando.Dispose()
  16. MsgBox("Saved")

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

Código
  1. If Clipboard.GetDataObject.GetDataPresent("Bitmap") Then
  2. PictureBox1.Image = CType(Clipboard.GetDataObject.GetData("Bitmap"), Bitmap)
  3. End If

y no se como decirle aca en que ruta esta el archivo por que no esta en el disco.
Código
  1. 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
  1. Imports System.IO
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim i As New MemoryStream()
  7.        PictureBox1.Image.Save(i, System.Drawing.Imaging.ImageFormat.Jpeg) ' aca guardas la imagen del picture a Stream
  8.  
  9.        Dim breader As New BinaryReader(i) ' aca sigue tu codigo...
  10.    End Sub
  11. 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...