Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2010
toni.vi toni.vi is offline
Miembro
 
Registrado: may 2003
Ubicación: Sant Fost(Barcelona)
Posts: 102
Poder: 22
toni.vi Va por buen camino
Comprimir Imagenes en JPG

Aunque ya se ha tratado el tema, tengo un problema al querer comprimir todo un directorio de imagenes.
El código es:
Código Delphi [-]
procedure TForm1.btComprimirImagenesClick(Sender: TObject);
var
  i : Integer;
  jpg:TJpegImage;
begin

  for i:= 0 to ListBox1.Count -1 do
  begin
      vFichero := ListBox1.Items[i];
      Image1.Picture.LoadFromFile(edDirectorioOrigen.Text + '\' + vFichero);
      Application.ProcessMessages;
      Refresh;
      jpg := TJpegImage.Create;
      jpg.Assign(Image1.Picture);                  
      jpg.CompressionQuality := jpg.CompressionQuality DIV 2;
      jpg.Compress;
      jpg.SaveToFile(edDirectorioDestino.Text + '\' + vFichero);
      jpg.Free;
  end;

end;
Necesito 2 cosas.
1.- Como puedo mantener los attributos de las fotos originales, es decir fecha de creacion o Imagen tomada del dia...etc
2.- He tenido que poner
Application.ProcessMessages;
sino me ponia el tamaño a 0 en el fichero resultante, aun así si hago otros procesos mientras comprimo me pone el tamaño a 0, es porque ejecuta el jpg.assign(image1.picture) antes que se cargue la imagen.
He probado con retrasos y tampoco funciona.

¿Alguna sugerencia?
Gracias.
Responder Con Cita
  #2  
Antiguo 15-04-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.935
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por toni.vi Ver Mensaje
1.- Como puedo mantener los attributos de las fotos originales, es decir fecha de creacion o Imagen tomada del dia...etc
Para este punto, creo que esto te va a servir:
Código Delphi [-]
function GetFileTimeByName(lpFileName: PAnsiChar; lpCreationTime, lpLastAccessTime, lpLastWriteTime: PFileTime): boolean;
var
  hFile: THandle;
begin
  hFile := CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, Nil, OPEN_EXISTING, 0, 0);
  if hFile <> 0 Then
    try
      Result := GetFileTime(hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
    finally
      CloseHandle(hFile);
    end
  else
    Result := False;
end;

function SetFileTimeByName(lpFileName: PAnsiChar; lpCreationTime, lpLastAccessTime, lpLastWriteTime: PFileTime): boolean;
var
  hFile: THandle;
begin
  hFile := CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_READ, Nil, OPEN_EXISTING, 0, 0);
  if hFile <> 0 Then
    try
      Result := SetFileTime(hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
    finally
      CloseHandle(hFile);
    end
  else
    Result := False;
end;

function CopyFileTimes(lpSource, lpDest: PAnsiChar): boolean;
var
  ftCreationTime,
  ftLastAccessTime,
  ftLastWriteTime: TFileTime;
begin
  if GetFileTimeByName(lpSource, @ftCreationTime, @ftLastAccessTime, @ftLastWriteTime) then
    Result := SetFileTimeByName(lpDest, @ftCreationTime, @ftLastAccessTime, @ftLastWriteTime)
  else
    Result := False;
end;

Simplemente deberías utilizar la función CopyFileTimes pasando el archivo origen y destino.

Para el resto... ¿Es necesario que lo cargues en un TImage?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comprimir Roxy188 Varios 1 23-09-2008 23:52:18
comprimir AVI con la API zidfrid API de Windows 0 20-06-2007 22:40:28
comprimir AVI con la API. zidfrid C++ Builder 1 06-06-2007 22:18:11
Comprimir con UPX Mr.Vaka Varios 6 29-12-2005 14:00:50
comprimir un jpg User_baja1 Gráficos 1 08-07-2005 11:47:56


La franja horaria es GMT +2. Ahora son las 18:48:58.


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