elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5  (Leído 1,792 veces)
juanedwin

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
« en: 18 Enero 2022, 22:03 pm »

saludos, tengo un archivo de imagen lo cargo en un picturebox o un control image y tengo unos datos en un textox (cadena de texto), quisiera poder de alguna manera exportarlo esos 2 componentes imagen y texto en un archivo, y de igual manera hacerlo a la inversa coger ese archivo exportado y volver a su posicion inicial es decir cargar la imagen en el picturebox  y el texto al textbox. saludos


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.211


Ver Perfil
Re: Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
« Respuesta #1 en: 19 Enero 2022, 15:34 pm »

Crea una simple estructura con estos campos:

SizeImagen  entero32
SizeTexto  entero32
Opcionalmente sus nombres, si hubieran de ser de interés para lo que se haga.

Ahora creas un fichero nuevo con una extensión de tu interés, preferiblemente que no recoja ninguna aplicación para no inducir a errores.

El fichero destino tendrá, en este orden:
1 - La imagen
2 - El texto
3 - La estructura

Es decir, llenas la estructura con el tamaño de la imagen y la del texto. Luego lees la imagen en un array y lo vuelcas al fichero destino, luego lees el texto, y lo escribes detrás, finalmente escribes la estructura.

A la hora de leerlo, se hace la operación inversa (se leen en orden inverso), basta posicionar punteros de lectura y crear el array del tamaño correcto, son simples matemáticas de suma y resta. NET dispone de varios objetos para leer sin necesidad de tener que guardarlo de nuevo a otro fichero... Pero si tus conocimientos son limitados, al menos debeieras ser capaz de llegar a eso.

Hay una ventaja... la imagen al ir al comienzo de dicho fichero, puede ser leído (es lo normal), sin importar lo que haya detrás el decodificador de la imagen sabrá hasta donde leer y donde parar. Luego para cargar la imagen basta con pasar la ruta de dicho fichero.


En línea

juanedwin

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
« Respuesta #2 en: 21 Enero 2022, 20:55 pm »

Gracias, por tu respuesta, me diste una idea, aunque no pude realizar tu propuesta, es que tengo conocimiento muy basico, asi que busque y resolvi con el siguiente codigo, quisiera ver si esta bien codificado, no se eso de las buenas formas de programar, resolvi con este codigo :
Código
  1. Private Sub btnExportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExportar.Click
  2.        Try
  3.            ' Obtengo los bytes de la imagen y del texto
  4.            Dim archivoimagenByte = IO.File.ReadAllBytes("C:\Users\luchito\Desktop\villancicos huaraz.png")
  5.            Dim archivotexto = System.Text.Encoding.UTF8.GetBytes(tbOriginal.Text.ToCharArray)
  6.            ' Convierto los bytes de imagen y texto en string
  7.            Dim exportar1 As String = Convert.ToBase64String(archivoimagenByte)
  8.            Dim exportar2 As String = Convert.ToBase64String(archivotexto)
  9.            ' Creo un archivo con una extension no usada
  10.            ' y escribo las dos variables separadas por enter
  11.            Using sw As New IO.StreamWriter("c:\exportar.iop", False)
  12.                sw.WriteLine(exportar1 & vbCrLf & exportar2)
  13.            End Using
  14.        Catch
  15.            MsgBox(Err.Description)
  16.        End Try
  17.    End Sub
  18.  
  19.    Private Sub btnImportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImportar.Click
  20.        ' Obtengo la lectura del archivo exportado
  21.        Dim sr As New IO.StreamReader("c:\exportar.iop")
  22.        ' Separo los datos de la imagen y texto y lo asigno a la variable memoria
  23.        Dim memoria() = sr.ReadToEnd().Split(vbCrLf)
  24.        sr.Close()
  25.        ' Convierto el texto de imagen en array de bytes al igual que el texto
  26.        Dim imagenByte() As Byte = Convert.FromBase64String(memoria(0))
  27.        Dim texto() As Byte = Convert.FromBase64String(memoria(1))
  28.        ' Armo la imagen con los bytes y el texto tambien
  29.        Using ms As New IO.MemoryStream(imagenByte, 0, imagenByte.Length)
  30.            pbCopia.Image = Bitmap.FromStream(ms)
  31.            tbCopia.Text = System.Text.Encoding.UTF8.GetString(texto)
  32.        End Using
  33.    End Sub
« Última modificación: 22 Enero 2022, 15:17 pm por juanedwin » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.211


Ver Perfil
Re: Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
« Respuesta #3 en: 22 Enero 2022, 14:39 pm »

Te vale...

Yo hubiera operado exclusivamente con bytes y sin necesidad de la codificación a y desde Base64.
Pero tratándose de  contenido de pequeño tamaño (una imagen comprimida y el texto de un textbox), no pecará demasiado de lentitud.

Nota que la conversión a Base64 permite el 'splitado' posterior correctamente con un 'separador' que no forma parte de la codificación de Base64 (retorno de carro y avance  de línea en el ejemplo). Es adecuado sin embargo que conozcas que un split, exige buscar (byte a byte prácticamente) la secuencia a lo largo de todo el contenido (imagina si ocupara cientos de Mb.), en tanto que si se guarda un valor con el tamaño de uno u ambos contenidos, el punto de unión entre ambos contenidos se conoce de forma absoluta, sin necesidad de búsqueda, de ahí que sea más eficiente la forma que te señalé.

Cuando pongas código, al poner código y usar las etiquetas 'code' puedes elegir desde la ventana de edición del mensaje, en el combobox 'código GeSHi', el lenguaje usado así se colorea la sintaxis y lo hace más legible.
En línea

juanedwin

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Como fusionar una archivo de imagen y de texto en uno con vb.net framework3.5
« Respuesta #4 en: 25 Enero 2022, 16:02 pm »

tienes razon, sin embargo no he podido realizar o encontrar como realizar eso(tu primer comentario), asi que hice con otro metodo que creo es mas eficiente que mi propuesta inicial, no se si estara bien pero aqui va.
Código
  1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  2.        Dim archivoimagenByte = IO.File.ReadAllBytes("C:\Users\luchito\Desktop\9.jpg")
  3.        Dim archivoBinary As BinaryWriter = New BinaryWriter(File.Open("c:\jj.jj", FileMode.Create))
  4.        archivoBinary.Write(archivoimagenByte.Length)
  5.        archivoBinary.Write(archivoimagenByte)
  6.        archivoBinary.Write(TextBox1.Text)
  7.        archivoBinary.Close()
  8.    End Sub
  9.    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  10.        Dim archivoBinary As BinaryReader = New BinaryReader(File.Open("c:\jj.jj", FileMode.Open))
  11.        Dim pictureLength = archivoBinary.ReadInt32
  12.        Dim imgByte = archivoBinary.ReadBytes(pictureLength)
  13.        Using ms As MemoryStream = New MemoryStream(imgByte, 0, imgByte.Length)
  14.            PictureBox2.Image = Bitmap.FromStream(ms)
  15.        End Using
  16.        TextBox2.Text = archivoBinary.ReadString
  17.        archivoBinary.Close()
  18.    End Sub
« Última modificación: 25 Enero 2022, 16:04 pm por juanedwin » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Se puede fusionar partes divididas de un video en un solo archivo (full) ??
Multimedia
Ad0nis 2 1,072 Último mensaje 28 Diciembre 2005, 18:41 pm
por Ad0nis
como agregar imagen a campo de texto dinamico?
Diseño Gráfico
Azielito 2 5,750 Último mensaje 29 Octubre 2006, 22:40 pm
por Azielito
Como puedo extraer el texto de una imagen. URGENTE!!!!!
Programación Visual Basic
augusto_pr 2 7,206 Último mensaje 3 Abril 2007, 21:44 pm
por malgia
Texto como imagen
Diseño Gráfico
[@] 6 2,239 Último mensaje 3 Mayo 2007, 08:40 am
por _sAnChO_
Alguien save como crear archivo php igual que el archivo de texto
Windows
BrokerJoker 6 5,567 Último mensaje 17 Mayo 2012, 02:47 am
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines