Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Reducir tamaño de imagen de un dbimage (https://www.clubdelphi.com/foros/showthread.php?t=15969)

Walterdf 10-11-2004 21:59:48

Reducir tamaño de imagen de un dbimage
 
Buenas

Estoy trabajando en un programa que inserta figuras de archivos .jpg a una tabla Paradox. La parte de la inserción ya la terminé y funciona bien pero ahora quisiera que antes de insertar la imagen en el DBImage, que la reduzca de tamaño. Se me ocurre utilizar un objeto TJpegImage y aplicar las propiedades CompressQuality y Compress (según lo que vi en otro hilo), el problema es que quisiera manipular la imagen en el ClipBoard y no mediante archivos y no tengo muy claro como se manejan esas propiedades.
Si alguien puede ayudarme o tiene otra sugerencia se lo agredeceré.
Saludos.
Muchas gracias.

Walter

Neftali [Germán.Estévez] 11-11-2004 11:00:10

Cita:

Empezado por Walterdf
...que la reduzca de tamaño. Se me ocurre utilizar un objeto TJpegImage y aplicar las propiedades CompressQuality y Compress (según lo que vi en otro hilo), el problema es que quisiera manipular la imagen en el ClipBoard y no mediante archivos

No tengo claro si al reducir "al tamaño de la imagen" te refires al ancho y al alto o al tamaño del fichero (supongo que es éste segundo, por lo que comentas de compresión -CompressQuality -), pero me da la impresión de que para ninguno de los dos casos "necesitas" utilizar ni ficheros ni el ClipBoard.
No acabo de entender a qué te refieres con "quisiera manipular la imagen en el ClipBoard"; El portapapeles simplemente es un lugar que almacena información, no se usa para manipular cosas; Lo que sí puedes hacer es realizar el trabajo que quieres (reducir el tamaño) y luego copiar el resultado al Clipboard; Para allo puedes utilizar los métodos de la clase TJpegImage, LoadFromClipboardFormat y SaveToClipboardFormat.

Si no es ésto lo que quieres, tal vez aclararía más que quieres decir con lo de "usar el clipboard" y algo de código.

Walterdf 11-11-2004 12:39:18

Hola Neftali,
Ante todo, gracias por haberme respondido.
Perdón por la falta de claridad en mi consulta, tenés razón, lo escribí apurado y así salió.
Lo que necesito hacer es reducir el peso de la imagen bajandole un poco la calidad y pensé en hacerlo con las propiedades que nombré antes, CompressQuality.
Cuando hablo del ClipBoard me refiero a que no necesito guardar la figura modificada en un archivo, el programa debería hacer lo siguiente, abrir el archivo .jpg, reducir el peso de la imagen y pegarla en el dbimage. Calculo que para esto utilizaría las propiedades SaveToClipBoardFormat y LoadFromClipBoardFormat y no entiendo del todo los parámetros que deben llevar.
Espero haber aclarado un poco el objeto de mi consulta y si puedes darme una mano con algún código de ejemplo te lo agradeceré.
Un saludo
Walter

Neftali [Germán.Estévez] 11-11-2004 13:17:39

Cita:

Empezado por Walterdf
...el programa debería hacer lo siguiente, abrir el archivo .jpg, reducir el peso de la imagen y pegarla en el dbimage...

Mejor explicado ahora, dónde va a parar...;)
Un comentario sólo, en lugar de "pegarla" en el DBImage, debes pegarla en el campo asociado del Dataset, que es el que tiene el dato, el DBImage símplemente "muestra" lo que hay en el DataSet.


Cita:

Empezado por Walterdf
...Calculo que para esto utilizaría las propiedades SaveToClipBoardFormat y LoadFromClipBoardFormat y no entiendo del todo los parámetros que deben llevar.

Como ya te comenté, para hacer lo que pides no se necesita utilizar el Clipboard para nada, puedes hacerlo con objetos.

Código Delphi [-]
var
  jpg:TJpegImage;
begin
  // Crear el objeto JPG
  jpg := TJpegImage.Create;
  try
    // Asignar de un TImage o Leer de disco
    jpg.Assign(Image1.Picture);
    // CAmbiar compresión y comprimir
    jpg.CompressionQuality := jpg.CompressionQuality DIV 2;
    jpg.Compress;
    // Asignar a otro Image
    Image2.Picture.Assign(jpg);
    // Para comprobar sólo; grabar las nuevas imágenes desde jpg y TImage2
   // y comprobar el tamaño en disco
    Image2.Picture.SaveToFile('c:\temp\out-Timage.jpg');
    jpg.SaveToFile('c:\temp\out-jpg.jpg');
  finally
    jpg.Free;
  end;

Walterdf 11-11-2004 14:20:33

Muchas gracias Neftali, funcionó de maravillas!!!
De todos modos y si no es mucho molestia, me gustaría saber exactamente como funcionan las propiedades SaveToClipBoardFormat y LoadFromClipBoardFormat, simplemente me quedé con la curiosidad.
Un abrazo y gracias.
Walter


La franja horaria es GMT +2. Ahora son las 15:51:13.

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