Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2011
Avatar de sintecsl
sintecsl sintecsl is offline
Miembro
 
Registrado: jun 2008
Ubicación: Barcelona - Spain
Posts: 40
Poder: 0
sintecsl Va por buen camino
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
__________________
www.sintecsl.es
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
Reducir tamaño bmp atos Impresión 0 18-07-2008 11:43:02
Como reducir mi log Gustavo Gowdak MS SQL Server 2 04-06-2007 23:43:06
reducir decimales de float el_barto Varios 4 22-09-2005 21:27:09
reducir tamaño del LOG orodriguezc MS SQL Server 3 09-03-2004 14:50:35


La franja horaria es GMT +2. Ahora son las 12:32:00.


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