Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Stream a TImage (https://www.clubdelphi.com/foros/showthread.php?t=42658)

eframtz 19-04-2007 02:00:24

Stream a TImage
 
Que tal, mi problema es el siguiente:
Un componente (ID3Engine) que lee la informacion de las etiquetas de los archivos mp3 me devuelve un stream con la imagen
almacenada en este, he tratado de pasar este valor a un TImage con

Código Delphi [-]image1.picture.bitmap.LoadFromStream(imagedata)


pero no muestra nada, tambien lo salve en un archivo para tratar de visualizarlo, pero el contenido no es valido.
¿que es lo que estoy haciendo mal?
Muchas gracias por su ayuda.

seoane 19-04-2007 02:30:30

Cita:

Empezado por eframtz
he tratado de pasar este valor a un TImage con
Código Delphi [-]
image1.picture.bitmap.LoadFromStream(imagedata)
pero no muestra nada

:confused: ¿Muestra algun error? o simplemente no muestra nada.
Cita:

Empezado por eframtz
tambien lo salve en un archivo para tratar de visualizarlo, pero el contenido no es valido.

Ese archivo que guardas, ¿lo puedes abrir con otro programa como Photoshop o Paint? y si puedes abrirlo, ¿de que archivo se trata? ¿un jpg, bmp, png ...? :confused:

eframtz 19-04-2007 02:39:28

Gracias Seoane por tu respuesta:
Esto es lo que estoy haciendo segun yo para colocar el valor del stream en el objeto imagen, y paga guardarlo en un archivo:

image1.Picture.Bitmap.LoadFromStream(ImageData);
ImageData.SaveToFile('prueba.jpg');

No marca ningun error, solo no muestra nada en el timage, y el archivo al tratar de abrirlo con el editor de imagenes dice el que el formato no es compatible.

seoane 19-04-2007 12:21:29

No tengo muchos datos, asi que solo puedo dar palos de ciego.

Prueba a poner la posicion del stream a cero antes de intentar cargarlo.
Código Delphi [-]
ImageData.Position:= 0;

Ademas, parece que la imagen es una jpeg y no un bmp. Asi que yo usaria un codigo como este:
Código Delphi [-]
// Añade jpeg a las uses de tu proyecto
uses JPEG;

var
  jpg: TJPEGImage;

begin
  jpg:= TJPEGImage.Create;
  try
    ImageData.Position:= 0;
    jpg.LoadFromStream(ImageData);
    image1.picture.Assign(jpg);
  finally
    jpg.Free;
  end;
end;

eframtz 20-04-2007 04:55:06

Que tal, pues otra vez aqui. Intente lo que me dijiste pero obtuve un error al asignar el valor al jpg, supongo que la supuesta imagen que obtengo no esta bien.
Indagando por el foro encontre que alguien menciona que la libreira JVCL tiene algo de lo que necesito, asi que me puse a investigar al respecto y efectivamente trae un componente que tambien maneja las etiquetas de los archivos mp3, puedes ver los datos en tiempo de diseño, incluyendo los frames de las imagenes lyrics, etc; el unico problema es que en runtime marca error de compatibilidad con las imagenes jpg, ¿algo raro no?, asi que utilice el codigo que tan amablemente me proporcionaste para transformar la imagen para cuando sean del tipo jpg y vaya que funciono muy bien.
Sabes, yo me especializo en sistemas administrativos, puntos de venta, facturacion, etc., asi que si alguna vez necesitas algo al respecto, no dudes en dicirmelo. Te preguntaras entonces que tiene que ver el tema de este hilo, ah, eso es porque que estoy hacendo una especie de rockola que trabaje con la informacion del MediaMonkey.
Agradezco tu apoyo y espero vernos pronto por aqui nuevamente.


La franja horaria es GMT +2. Ahora son las 03:45:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi