Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 12-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
¿La función BMP2JPG comprime una imagen en bmp a otra en jpeg?
¿Sabes si es más rápida que el assign de delphi?
Responder Con Cita
  #22  
Antiguo 12-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Todas las versiones que he encontrado de BMP2JPG acaban utilizando el Assign, así que no creo que te sirva.

Código Delphi [-]
 ...
 MyJpeg.Assign(Image1.Picture.Bitmap);
 ...

o ésta:

Código Delphi [-]
 ...
       with MyJPEG do begin         
   Assign(MyBMP);         
   SaveToFile('YourJpegHere.JPEG');         
   Free;       
 end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #23  
Antiguo 12-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Gracias Netfali. Bueno, todo esto me hace pensar que quizás la forma más rápida para comprimir sea la de utilizar el assign. ¿no creeis?

Si es así .... Bueno seguiré buscando una forma de acelerar esto.
Responder Con Cita
  #24  
Antiguo 12-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otra cosa, tal vez deberías mirar ésta librería (por probar no pierdes nada). Sabía que algo había visto y hasta hoy no he recordado donde (he buscado en los Bookmarks y lo he encontrado).

Graphics32: A fast graphics library for Delphi (ahoira ha pasado a SourceForge)
http://www.g32.org/graphics32/index.html

La descripción del paquete dice lo siguiente (hace mucho incapié en lo de "FAST", asó que tal vez te interese...):
Description

Graphics32 is a library designed for fast 32-bit graphics handling. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives, and in most cases Graphics32 outperforms the standard TBitmap/TCanvas classes. It is almost a hundred times faster in per-pixel access and about 2–5 times faster in drawing lines.

Features

Some of Graphics32 features include:

  • Fast per-pixel access up to 100 times faster compared to standard TCanvas/TBitmap;
  • Bitmap alpha blending (including per-pixel alpha blending);
  • Pixel, line and polygon antialiasing (combined with alpha blending);
  • Locking the bitmap for safe multithreading;
  • Enhanced scaling of bitmaps;
  • Affine transformations of bitmaps: rotations, scaling, etc. with sub-pixel accuracy;
  • Arbitrary projective transformations of bitmaps;
  • Flicker-free image displaying components with optimized double buffering;
  • Multiple customizable easy-to-use overlay layers;
  • A property editor for RGB and alpha channel loading;
  • Design-time loading of image formats supported by standard TPicture;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #25  
Antiguo 12-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Voy a probar a ver como va con estos componentes.
Responder Con Cita
  #26  
Antiguo 12-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Gracias netfali por tu ayuda pero no me sirven estos componentes. No disponen de compatibilidad con la clase TJpegImage por lo que no se como pasar un tbitmap a un tjpegimage.

Vamos que me conformo con pasar de un tbitmap a un tmemorystream pero que contenga la información comprimida. Lo que pretendo es reducir el tamaño de la imagen bmp que me llega de la cámara. Me da igual si la paso a jpeg o directamente a un tmemorystream pero comprimida con alguna función que me genere un archivo más pequeño.
Responder Con Cita
  #27  
Antiguo 12-04-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
perdon mar646, por ahi no me exprese bien.
La idea de la funcion que te pase tiene implementado un assign adentro.

Código:
function BMPtoJPG (BMPpic, JPGpic: string):boolean;
var
    Bitmap: TBitmap;
    JpegImg: TJpegImage;
begin
  Result:=False;
  Bitmap := TBitmap.Create;
  try
    Bitmap.LoadFromFile(BMPpic);
    JpegImg := TJpegImage.Create;
    try
      JpegImg.Assign(Bitmap);
      JpegImg.SaveToFile(JPGpic);
      Result:=True;
    finally
      JpegImg.Free
    end;
  finally
    Bitmap.Free
  end;
end;
Pero a lo que me referia, es a la creación de los dos objetos, porque los podes estar creando cada ves que realizas una conversion.
En el ejemplo anterior, se crean dos objetos, Bitmap y JpegImg, ademas tambien Bitmap carga la imagen desde disco.
Aca hay bastante desperdicio de tiempo que se puede acelerar.

Una es trabajando con variables globales para que no se creen y destruyan con cada conversion.
Por otro lado, caragar la imagen BMP desde memoria.

Espero que quede mas claro




Espero que se entienda.
__________________
[Crandel]
Responder Con Cita
  #28  
Antiguo 13-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Ha quedado muy claro. Pero ya he tenido eso en cuenta. Bueno, la variable bitmap se crea y se destruye en cada paso (pero te aseguro que esto es inevitable porque lo hace internamente el objeto encargado de capturar la imagen del stream de video y es algo complicado de depurar, aunque le echaré otro vistazo) pero la jpeg si que la tengo de forma global.

De todas formas muchas gracias por tus sugerencias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:17:49.


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
Copyright 1996-2007 Club Delphi