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 jpgs de 11mb ... (https://www.clubdelphi.com/foros/showthread.php?t=35383)

ingel 08-09-2006 16:53:54

reducir jpgs de 11mb ...
 
HOla .. el problema que tengo surge porque aparentemente el seteo que le
hago al escaner sobre la definicion en que debe escanear (para que genere imagenes de 500K maximo) la pierde en cada nueva escaneada y usa la que viene por defecto y me genera imagenes de 11 Megas .. con lo cual la BD me ha crecido exponencialmente en tamaño.(sql2000 en campos Image)
Lo que quisiera es saber si puedo predefinir esos parametros de escaneo desde el programa (es un HP 4200 por si sirve el dato)
Y si puedo 'recorrer' mi base de datos y reducir los 11 megas de cada jpg a 500K aprox. o si debo escanear de nuevo.(espero que no porque son como 1000 clientes :( )
(uso Delphi 5 y el componente TImage para levantar y mostrar la imagen, digo esto porque me encontré por ej. que no tiene la prop. proportional y quizas no sea el mejor componente para utilizar.)
Gracias , Saludos

Neftali [Germán.Estévez] 08-09-2006 17:08:44

Que conste que lo digo sin probar, pero yo probaría con un proceso que ecorra las imágenes de la Base de Datos, les baje la calidad y las vuelva a grabar.
La clase TJPEGImage tiene la propiedad CompressionQuality; Tal vez modificando esta propiedad puedas reducir el tamaño.

mamcx 08-09-2006 17:20:18

Un codigo de ejemplo:

Código Delphi [-]
procedure GenerarPreview(  );
var
  Imagen : TPicture;
  Target: TJPEGImage;
  Bmp : TBitmap;
  Ext: String;
begin

  Imagen := TPicture.Create;

  try
    try
      Imagen.LoadFromFile( ImagenOrigen );
      Ext := ExtractFileExt( ImagenDestino );

      Target := TJPEGImage.Create;

      Bmp := TBitmap.Create;

      try
         //Convertirlo a un BMP
         Bmp.Width := Imagen.Width;
         Bmp.Height := Imagen.Height;

         Bmp.Canvas.Draw(0, 0, Imagen.Graphic);

         //Redimensionar la imagen
         BitmapResizeProportional(Bmp,Alto,false);
         //Mejora la visualizacion en las paginas, aunque el archivo es mas largo
         Target.ProgressiveEncoding := true;
         //calidad por defecto
         Target.CompressionQuality := Calidad;
         Target.Assign(Bmp);

         Target.SaveToFile( ImagenDestino );

         Writeln('Convertido' + ImagenOrigen +'  en '+ ImagenDestino+' con exito!');
      finally
         Target.Free;
         Bmp.Free;
      end;//try
    finally
      Imagen.Free;
    end;//try
  except on E: Exception do
    Writeln('ERROR:'+E.Message);
  end;
end;

Tambien busca la utilidad NView que es mas completa y gratis

ingel 08-09-2006 17:30:50

gracias mamcx ..
 
probaré lo que me has enviado .. pero como soy nuevito en esto de tratar con imagenes te pediria algunas aclaraciones ...
cuando quiero redimencionar la imagen .. que propiedades debo alterar ..
alto ? ancho? Peso?
Yo lo que se es que la imagen origen pesa 11mb y quiero una de aprox 500K

en la linea BitmapResizeProportional(Bmp,Alto,false);
el parametro alto a que se refiere ?

saludos y gracias

mamcx 08-09-2006 18:08:11

Ah, eso era una rutina que usaba para asegurarme que las imagenes siempre tuvieran un mismo alto (era para una tienda).

No la necesitas, la puedes borrar...


La franja horaria es GMT +2. Ahora son las 22:53:50.

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