Convertir imagen en bytes[]

16/05/2008 - 17:34 por jcpc91 | Informe spam
Hola

Tengo una duda como convertir una cadena de strings que en la base de
datos representan una imagen ya que al momento ke realizo la consulta
la almaceno en un DataTable he estado investigando sobre el espacio de
nombres System.Text y he encontrado formas de convertir un string que
en realidad es una imagen almacenada en la base de datos como Image
pero no estoy seguro que clase utilizar:
UnicodeEncoding
UTF32Encoding
UTF7Encoding
son algunos de las clases qiue implementan un metodo para obtener
bytes pero no estoy seguro cual clase utilizar de las que mensione
arriba

public override int GetBytes(string s, int charIndex, int
charCount, byte[] bytes, int byteIndex);

gracias por sus respuestas

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
16/05/2008 - 19:39 | Informe spam
wrote in message
news:
Tengo una duda como convertir una cadena de strings que en la base de
datos representan una imagen ya que al momento ke realizo la consulta
la almaceno en un DataTable he estado investigando sobre el espacio de
nombres System.Text y he encontrado formas de convertir un string que
en realidad es una imagen almacenada en la base de datos como Image
pero no estoy seguro que clase utilizar:
UnicodeEncoding
UTF32Encoding
UTF7Encoding
son algunos de las clases qiue implementan un metodo para obtener
bytes pero no estoy seguro cual clase utilizar de las que mensione
arriba

public override int GetBytes(string s, int charIndex, int
charCount, byte[] bytes, int byteIndex);



No, las clases que hay en System.Text no sirven para convertir imágenes.
Se utilizan para convertir los strings de .Net (que guardan texto en
Unicode) a otros juegos de caracteres (por ejemplo, ASCII, UTF-8,
Windows-1252, etc.). El método GetBytes te devuelve un array de bytes que
contiene las letras del String una vez convertidas en otro juego de
caracteres. Por lo tanto, no vale para convertir una imagen, que es binaria
y puede contener todos los valores posibles de los bytes, no solo los que se
corresponden con letras en un juego de caracteres determinado.

La información que has puesto en el mensaje no es suficiente para
determinar la forma correcta de decodificar las imágenes que tienes como
strings en la base de datos, ya que se necesitaría conocer el proceso que se
ha seguido al almacenarlas (por ejemplo, ¿están codificadas en base-64?)
para realizar la operación inversa a ese proceso.
Respuesta Responder a este mensaje
#2 Jhonny Vargas P.
17/05/2008 - 01:51 | Informe spam
Tengo una duda como convertir una cadena de strings que en la base de
datos representan una imagen ya que al momento ke realizo la consulta
la almaceno en un DataTable he estado investigando sobre el espacio de
nombres System.Text y he encontrado formas de convertir un string que
en realidad es una imagen almacenada en la base de datos como Image
pero no estoy seguro que clase utilizar:
UnicodeEncoding
UTF32Encoding
UTF7Encoding
son algunos de las clases qiue implementan un metodo para obtener
bytes pero no estoy seguro cual clase utilizar de las que mensione
arriba

public override int GetBytes(string s, int charIndex, int
charCount, byte[] bytes, int byteIndex);

gracias por sus respuestas



Hola,

Antes que nada no sé mucho C#, por lo tanto el código que te adjunto es en
VB.NET

Si haces un SELECT TOP 1 doc_imagen FROM Tabla

Puedes rescatar en un dataset o datatable el valor, obviamente te devolverá
un conjunto de Bytes()

Dim ContenidoImagen() As Byte = objData.Tables(0).Rows(0).Item("doc_imagen")
My.Computer.FileSystem.WriteAllBytes("C:\temp\MiArchivo.JPG",
ContenidoImagen, True)

o puedes dejarlo en una misma línea:
My.Computer.FileSystem.WriteAllBytes("C:\temp\MiArchivo.JPG",
objData.Tables(0).Rows(0).Item("doc_imagen"), True)


Ahora para almacenar tienes 2 formas, la primera es con un objeto command,
ejemplo:


Dim objCommand As New SqlClient.SqlCommand("spColocarImagen")
objCommand.CommandType = CommandType.StoredProcedure

objCommand.Parameters.Add("@docID", SqlDbType.Int)
objCommand.Parameters("@docID").Value = docID

objCommand.Parameters.Add("@doc_imagen_bin", SqlDbType.Image)
objCommand.Parameters("@doc_imagen_bin").Value = Datos 'ESTA ES
UNA VARIABLE BYTE()

objCommand.Connection = New SqlClient.SqlConnection(ConString)
objCommand.Connection.Open()

Dim adapter As New SqlClient.SqlDataAdapter(objCommand)
Dim topics As New DataSet
adapter.Fill(topics, "imagen")

También puedes hacerlo transformando los Bytes en Base64 y enviandolo por
QUERY...aunque no lo he probado pero debería funcionar, lo malo es el largo
del archivo...



Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida