Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Compresion de un jpg (https://www.clubdelphi.com/foros/showthread.php?t=18657)

Raze 18-02-2005 13:27:57

Compresion de un jpg
 
estoy intentando comprimir un jpg con ayuda de TJpegImage y no consigo resultados. El código, compilado en Delphi 6 es el siguiente

fotografia := TJPegImage.Create;
fotografia.LoadFromfile('c:\sincomprimir.jpg);
fotografia.CompressionQuality := 30;
fotografia.Compress;
fotografia.SaveToFile('c:\comprimido.jpg);
fotografia.Free;

al ejecutarlo, el fichero comprimido.jpg ocupa 0 kb. Si prescindo de la orden compress lo crea bien, pero del mismo tamaño del anterior.

¿¿que estoy haciendo mal??

marto 18-02-2005 13:54:13

El formato jpg ya está comprimido :confused: :confused:

Raze 18-02-2005 14:10:21

cierto...
 
perdón
me referia a la disminución de la calidad (que repercuta en el tamaño final del fichero). Por defecto la calidad es de 90, y se puede poner en un rango de 0 a 100, pero al ejecutar la instruccion fotografia.compress es cuando no me da el resultado esperado.
aprovechando...¿es posible disminuir el tamaño en pixeles de la imagen?
veo las propiedades pixelformat y scale, pero no encuentro en ningún lado documentación para utilizarlas

gracias

ramonibk 18-02-2005 14:57:50

aver si entiendo lo que quieres.

es que en la visualizacion de la imagen esta te salga del tamaño que tu quieres sim perder la nitidez. es eso???


Bueno te pongo el codigo que yo uso para ver imagenes aver si te sirve


Código:

procedure CargaJPGProporcionado( Fichero: string; const QueImage: TImage);
var
ElJPG                : TJpegImage;
Rectangulo : TRect;
EscalaX,
EscalaY,
Escala        : Single;
begin
ElJPG:=TJPegImage.Create;
try
ElJPG.LoadFromFile( Fichero );
//Por defecto, escala 1:1
EscalaX := 1.0;
EscalaY := 1.0;
//Hallamos la escala de reducción Horizontal
if QueImage.Width < ElJPG.Width then
        EscalaX := QueImage.Width / ElJPG.Width;
//La escala vertical
if QueImage.Height < ElJPG.Height then
                EscalaY := QueImage.Height / ElJPG.Height;
//Escogemos la menor de las 2
if EscalaY < EscalaX then Escala:=EscalaY else Escala:=EscalaX;
//Y la usamos para reducir el rectangulo destino
with Rectangulo do begin
        Right:=Trunc(ElJPG.Width * Escala);
        Bottom:=Trunc(ElJPG.Height * Escala);
        Left:=0;
        Top:=0;
        end;
//Dibujamos el bitmap con el nuevo tamaño en el TImage destino
with QueImage.Picture.Bitmap do begin
Width := Rectangulo.Right;
Height := Rectangulo.Bottom;
Canvas.StretchDraw( Rectangulo,ElJPG );
End;
finally
ElJPG.Free;
end;

Bueno se me olvido decir que esto lo tome de Trucomania http://www.q3.nu/
a los cual les doy las gracias
Espero que te sea util

Raze 21-02-2005 09:10:40

¡¡muchísimas gracias!!
justo lo que necesitaba


La franja horaria es GMT +2. Ahora son las 11:16: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