FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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?? |
#2
|
||||
|
||||
El formato jpg ya está comprimido
__________________
E pur si muove |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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; a los cual les doy las gracias Espero que te sea util Última edición por ramonibk fecha: 23-02-2005 a las 18:41:37. |
#5
|
|||
|
|||
¡¡muchísimas gracias!!
justo lo que necesitaba |
|
|
|