Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2006
alain alain is offline
Registrado
 
Registrado: may 2006
Posts: 8
Poder: 0
alain Va por buen camino
imprimir imagenes en maxima calidad

Hola gente, tengo unas dudas con esto... Necesito imprimir imagenes PNG desde un sistema q estoy desarrollando y queria saber si hay alguna forma de imprimir imagenes que no conozca. Ya probe con
Código Delphi [-]
Printer.BeginDoc;
Printer.Canvas.Draw(miImagen);
Printer.EndDoc;
y tambien probre con la funcion "StretchBlt" que creo es de GDI, y en ambos casos los colores de la imagen impresa variaban un poco.
En fin, estoy un poco mareado con esto, y queria saber si pueden recomendarme alguna otra manera de hacerlo, o si existe, algun componente q sirva para hacer esto.
Desde ya, muchas gracias.
Salu2!
Responder Con Cita
  #2  
Antiguo 22-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Usa un PrintDialog de la pestaña Dialogs de Delphi, permite elegir la impresora y configurarla para máxima calidad. Recordemos que cada impresora tiene opciones diferentes, llamando a esta ventana, tendremos acceso a todas las propiedades de esa impresora.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 22-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cuando dice que los colores variaban, ¿te refieres entre un metdo y otro o con respecto a como se ven en pantalla? Si es lo segundo ten en cuenta que mientras en la pantalla se utiliza una mezcla de Rojo, Verde y Azul para mostrar las imagenes, sobre el papel se utilza una mezcla de Cian, Magenta, Amarillo y Negro. Las impresora inetntan traducir lo mejor posible los colores de un sistema a otro pero el color puede variar un poco. Programas como photoshop utilizan filtro correctores de gama para que los colores se aproxmen lo mas posible, pero hay que clibrarlo para cada impresora.

En cuanto a los imprimir imagenes en el canvas con StretchBlt o metodos parecidos. Ten en cuenta que el canvas de la impresora es un poco "especial" y las operacion con pixeles se le atragantan un poco. Si lo que queremos dibujar es una foto no queda mas remedio, peri si queremos dibujar figuras geometricas, lineas, etc. es mejor hacerlo directamente sobre el canvas de la impresora para tener mas calidad.
Responder Con Cita
  #4  
Antiguo 22-06-2006
alain alain is offline
Registrado
 
Registrado: may 2006
Posts: 8
Poder: 0
alain Va por buen camino
Bueno, gracias por responder y perdon por no especificar bien mi problema.
Lo del PrintDialog ya lo estoy usando... Con lo de q variaban los colores me referia a las 2 imagenes impresas... Pero lo q q no me di cuenta (mejor dicho, me confundi) es q estaba comparando una imagen impresa con mi sistema y otra impresa con photoshop, ya probe unas cuantas veces y hay un poco de diferencia. Casi no encuentro diferencia haciendo un "Printer.Canvas.Draw" o un "StretchBlt".
Enrealidad mis dudas son con otra cosa. Las imagenes q tengo q imprimir tienen que estar siempre a la misma escala, digamos, si vario los dpi (o ppp) de la impresora no tiene q cambiar el tamaño de la imagen impresa, y para eso es q uso "StretchBlt", q lo q hace es agrandar o achicar una imagen al copiarla de un canvas origen a uno destino (el destino puede ser el canvas de la impresora), y de lo q tengo miedo es q al ampliar la imagen, se deformen los colores o algo por el estilo. Capaz esto de ajustar la escala se vea mejor en mi codigo, capaz es mas simple explicarlo asi...
Código Delphi [-]
uses pngimage;
// un componente para manejo de imagenes png libre
procedure TForm1.Button1Click(Sender: TObject);
var
  o: TPNGObject;   // imagen a imprimir (origen)
  impresora: TPrinter;
  dpi_foto_h: Integer; //dpi origen, osea las fotos, height
  dpi_foto_w: Integer; //dpi origen, osea las fotos, width
  d_width: Integer;    // ancho q tendra la imagen destino
  d_height: Integer;   // alto q tendra la imagen destino
  dpi_impresora_h: Integer;  //dpi q soporta la impresora, height
  dpi_impresora_w: Integer; //dpi q soporta la impresora, width
  ok: Boolean;
begin
  ok:= PrinterSetupDialog1.Execute;
  dpi_foto_h:= 300;
  dpi_foto_w:= 300;
  impresora:= Printer;
  o:= TPNGObject.Create;
  o.LoadFromFile('C:\mi_imagen.png');

  // devuelve el dpi en altura de la impresora
  dpi_impresora_h:= GetDeviceCaps(impresora.Handle, LOGPIXELSY);
  // devuelve el dpi en ancho de la impresora
  dpi_impresora_w:= GetDeviceCaps(impresora.Handle, LOGPIXELSX);

  // calculo el ancho de la imagen destino
  d_width:= round(o.Width * dpi_impresora_w / dpi_foto_w);
  // calculo el alto de la imagen destino
  d_height:= round(o.Height * dpi_impresora_h / dpi_foto_h);

  impresora.BeginDoc;
  impresora.Canvas.Lock;

  // copio la imagen a la impresora, agrandandola o achicandola, segun lo calculado arriba
  if StretchBlt(impresora.Canvas.Handle, 0, 0, d_width,d_height,
                o.Canvas.Handle, 0, 0, o.Width, o.Height,
                SRCCOPY) then
    ShowMessage('Se agrando con exito')
  else
    ShowMessage('ERROR al intentar ejecutar el StretchBlt');

  impresora.Canvas.Unlock;
  impresora.EndDoc;
end;

A ver q les parece, acepto todo tipo de opiniones, criticas.
Salu2!

Última edición por alain fecha: 22-06-2006 a las 18:15:02.
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
Redimensionar imagenes con buena calidad? RazoR Gráficos 17 06-06-2006 21:47:37
No puedo imprimir imagenes y shapes cesar_delphi Impresión 2 02-11-2005 02:22:50
Imprimir imagenes en Rave ajenas a la BD ¡¡ elbilla Impresión 0 21-12-2004 12:20:09
Problema al imprimir imágenes (Qreport) Benidelphi Impresión 0 28-08-2003 11:22:41
Como puedo imprimir un TtreeView con imagenes? jmrojass Varios 0 03-06-2003 22:03:38


La franja horaria es GMT +2. Ahora son las 12:35:21.


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