FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Bitmap a texto y texto a bitmap
Hola, he hecho un juego online en el que toda la comunicación se hace envíando cadenas de texto.
Ahora me gustaría poder enviar un TImage el cual siempre será un bitmap de 36 x 36 pixels y 256 colores. Pero no quería tocar el online del juego, me gustaría pasar el bitmap a una cadena de texto y enviarla. Cuando la reciba el otro jugador hay que convertirlo de nuevo a un bitmap, sabiendo que será un TImage de 36 x 36 pixels y 256 colores. Me he fijado que si miras un form en formato texto los componentes TImage los pone como cadena con una propiedad Picture.Data Código:
object Image1: TImage Left = 108 Top = 68 Width = 36 Height = 36 AutoSize = True Picture.Data = { 07544269746D61704609..... } end También he probado a forzar el tipo Image1.Picture as String ó Image1.Picture.Bitmap as String pero no funciona. ¿ Alguna forma de hacerlo para poder envíar online la imagen como una cadena de texto ? Gracias |
#2
|
||||
|
||||
El editor de formularios de delphi almacena una representación hexadecimal de los datos del componente (propiedad data). Podrías hacer lo mismo, o también usar un codificador/decodificador como los que vienen con las INDY, que hacen justamente eso. Representan cualqueir objeto binario en texto y lo inverso.
Estos métodos se inventaron para transmitir datos binarios sobre protocolos basados en texto, como el caso de SMTP (envío de correos) y se siguen utilizando hoy en día. TidEncoderMIME/TidDecoderMIME (base64) TidEncoderUUE/TidDecoderUUE TidEncoderQuotedPrintable/TidDecoderQuotedPrintable Cito la ayuda de la clase base para estos componentes, TidEncoder Cita:
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
Ademas de lo dicho por jachguate puedes usar las funciones que describo aqui:
http://delphi.jmrds.com/?q=node/43 Con ellas podrás convertir un Stream en un String y luego hacer el proceso inverso, y junto con los métodos SaveToStream y LoadFromStream del TBitmap son todo lo que necesitas. |
#4
|
||||
|
||||
Gracias a los dos por contestar.
Primero he estado mirando los componentes de Indy, pero no acabo de aclararme y no he encontrado ningún ejemplo. Luego he probado las funciones de seoane, que es justo lo que buscaba, pero tengo un problema al recuperar el TBitmap desde el stream. He hecho una prueba rápida:
Inicialmente las dos imágenes (TImage) tienen cargada una imagen del mismo tamaño y formato, pero son distintas, para ver si me copia el contenido de la imagen1 en la imagen2. Cuando lo pruebo la imagen2 se queda vacia, transparente. El problema está en el Image2.Picture.Bitmap.LoadFromStream() porque he probado a cargar el stream1 y me pasa el mismo problema. ¿Hay que preparar el TBitmap o el TImage de alguna manera para que cargue bien desde el stream ? Una vez cargada la imagen desde el strem he porbado a hacer un Image2.Rapaint, Image2.Update... pero sigue transparente. Saludos |
#5
|
||||
|
||||
Cita:
Pero si te vale lo de seoane, creo que puede resultar mas simple, aunque menos orientado a objetos Cita:
Probá con esto:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
||||
|
||||
Cita:
Por otro lado, antes del LoadFromStream nunca viene mal colocar la posición del stream a cero: Por lo demás, la solución de jachguate me parece impecable. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
stringGrid y bitmap | cacu | OOP | 2 | 24-10-2007 18:11:03 |
Bitmap | javikanin | Gráficos | 1 | 22-11-2004 13:32:15 |
Imagen a Bitmap | bustio | .NET | 1 | 08-11-2004 14:29:19 |
Descargar bitmap... | craven | Gráficos | 1 | 13-09-2003 13:27:22 |
propiedad bitmap | ccampoy | OOP | 1 | 29-06-2003 22:16:17 |
|