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 Imagenes (https://www.clubdelphi.com/foros/showthread.php?t=72134)

jerosol 29-01-2011 21:38:40

Reducir Imagenes
 
Hola a todos

Alguien me podria decir si existe alguna funcion o alguna propiedad para reducir o ampliar la resolucion de una imagen, sq estoy un poco oxidado y no lo recuerdo y por mas que busco no encuentro nada.

La idea es indicar un directorio donde haya varias imagenes (imagen001,imagen002...) yreducir el tamaño de KB que ocupen, de alguna manera que no sea cambiar el formato del archivo.
Porcierto los archivos que utilizo son .jpeg

Gracias ...

Casimiro Notevi 29-01-2011 21:47:02

Puedes quitarle calidad o puedes reducir sus medidas.

jerosol 29-01-2011 21:54:16

¿pero como?

Casimiro Notevi 30-01-2011 00:05:40

Pues deberías hacer una búsqueda por clubdelphi, son cosas que se han tratado en algunas ocasiones. Ahora mismo me viene a la memoria un truco del amigo Domingo Seoane, en su blog.

jerosol 31-01-2011 03:18:14

le exado un vistazo y lounico q he visto es algo para quitar basura de los archivos, pero a mi me interesa mas redimensionar las imagenes

ecfisa 31-01-2011 05:14:30

Cita:

Empezado por Casimiro Notevi (Mensaje 389339)
Pues deberías hacer una búsqueda por clubdelphi, son cosas que se han tratado en algunas ocasiones.

Hola jerosol.

Hice una busqueda con las palabras: cambiar resolución y encontré [este] enlace donde se dá una solución al tema.

Moraleja: Haz caso a Casimiro. :)

Un saludo.

Neftali [Germán.Estévez] 31-01-2011 10:51:58

También puedes echare un vistazo a esto (Resimensionar una imagen -Antialiasing-), a ver si es lo que necesitas.

jerosol 31-01-2011 14:21:15

He encontrado una funcion de flystar que hace justo lo que kiero
gracias a todos y perdonar.

Creo q ya se xq no encontraba nada con las busquedas q hacia, puede ser q buscaba en "trucos" y no en "buscar"

Bueno para la proxima ya lo se,bueno hasta la proxima

Casimiro Notevi 31-01-2011 15:23:56

Estupendo :)

drake555 01-02-2011 01:08:16

PS, yo una vez reduci la imagen con adobe photoshop. Pero en realidad no me acuerdo. Creo que es usando paint y adobe photoshop.

escafandra 01-02-2011 14:29:10

También puedes echar un vistazo a este hilo.

Saludos.

sintecsl 01-02-2011 16:06:17

Aportar algo mas
 
Veo que tienes la solución. De todas formas lo de reducir o ampliar siempre son pixels. Ni se crean ni se destruyen por si mismos al cambiar los DPI.

Lo de los DPI solo es metrica pura y dura. Es decir, te sirve para calcular
sobre un dispositivo el tamaño final de salida.

Ejemp : Si tienes una imagen de 200x100 pixels con un DPI de 300 (típico de
una impresora de inyección). Te estará indicando sobre una pulgada (2,54cm) ocupas 2/3 y 1/3. Es decir en Ancho=2,54*200/300=1,6933 cm
y el Alto=2,54*100/300=0,84666 cm

Esto se aplica a cualquier dispositivo (96 DPI dots por inche = Normalmente la pantalla).

Si reduces lo que tienes que hacer es interpolar matematicamente cogiendo matrices cuadrangulares con un entorno de n pixels a su alrededor.

Eso te dará un color promedio predominante que se hacercará bastante a la realidad.

De todas formas sacale partido al Windows (que pa eso se 'an matao los
programadores de la casa Micro...).

Te pongo un ejemplo de reducción de pixeles :

Código Delphi [-]

procedure TCapturaPantalla.CapturaPant;
Var
   C : TCanvas;
begin
     //Ocultar aplicación
  //   Application.MainForm.Visible := False;
  //   Sleep(100); //Dar tiempo al refresco de pantalla
     (* FORMA MEJORADA Y SENCILLA DE CAPTURA COMPLETA *)
     C:=TCanvas.Create;
     C.Handle := GetWindowDC(GetDesktopWindow); //Asignamos manejador
     //Asignamos al BitMap el mismo tamaño que tenemos actualmente
     FBMP.Width:=Round((ZoomXY.X2-ZoomXY.X1)*FReduccion/100.0);
     FBMP.Height:=Round((ZoomXY.Y2-ZoomXY.Y1)*FReduccion/100.0);
     if FAntialiasing then
        SetStretchBltMode(FBMP.Canvas.Handle, HALFTONE); //activa antialiasing
     FBMP.Canvas.CopyRect(Rect(0,0,FBMP.Width,FBMP.Height),C,
                          Rect(ZoomXY.X1,ZoomXY.Y1,ZoomXY.X2,ZoomXY.Y2));
     CreadoJPG:=False; //Para notificar que hay que crearlo
     CreadoGIF:=False; //Para notificar que hay que crearlo
     C.Free;
     //Hacemos reaparecer la aplicación que estaba en bandeja
   //  Application.MainForm.Visible := True;
     PrimeraVez:=False; //Ya no es la preimera vez
  //   Paint; //Dibujamos lo capturado
end;

Si solo quieres decrementar el tamaño que ocupa una imagen comprimela.

Saludos :eek:


La franja horaria es GMT +2. Ahora son las 18:36:24.

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