FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Imagen escala real por pantalla e impresora
Hola. Tengo un problema con las imágenes desde Delphi que no consigo solucionar.
Tengo una imagen de una etiqueta de botella escaneada, supuestamente a escala 1:1 (no la he escaneado yo pero me aseguran que está escaneada directamente sin transformación). La imagen está a 300ppp y de tamaño 1192 x 1116 píxeles. El tamaño real de la etiqueta es de aproximadamente 10cm ancho por 9,5 cm de alto. Cuando la cargo de un TImagen sin strecht y con autosize me da un tamaño del componente 650 x 682. Ahí ya se ve que en pantalla que es bastante más grande. Pero si luego voy e imprimo la imagen por impresora (usando fastreport con su componente de imagen) me sale por impresora casi ocupando un A4. Lo que quiero hacer es que la imagen vista por pantalla o impresa mantenga el tamaño original que se supone que trae el escaneado. Supongo que alguna operación no estoy haciendo bien pero no estoy puesto en el tema del tratamiento de imágenes. Alguien me puede indicar como hacerlo. Gracias. |
#2
|
||||
|
||||
Es que también depende de la configuración de la impresora, puede ser que tenga indicado que escale las imágenes al 100% del tamaño del papel. Fíjate en eso, en la configuración de la impresora.
|
#3
|
|||
|
|||
Gracias por la respuesta pero no es eso ya que en la vista previa de fast-report ya sale mal, ocupando casi medio A4 cuando la etiqueta es bastante más pequeña realmente.
La cuestión es que al cargar la imagen claro lo hace pixel a pixel y de ahí el tamaño tan grande. esto es normal porque así funciona la imagen digital, pero luego cuando la quiero imprimir debo hacer algún cálculo con la resolución para impresión (que es de 300ppp) y escalar la imagen para que salga bien, pero esto no se como calcularlo. |
#4
|
||||
|
||||
Pero si le pones un tamaño fijo y le dices que se ajuste a ese tamaño, entonces debe salir a ese tamaño.
Vaya, tantos tamaños en la misma frase |
#5
|
|||
|
|||
Claro ... precisamente eso es lo que quiero calcular, el tamaño. Si consigo ver con que fórmula calculo el tamaño correcto entonces se imprimirá bien. Eso es lo que no tengo claro como hacer.
|
#6
|
||||
|
||||
Creo que vas a tener que hacer varias pruebas hasta encontrar el tamaño adecuado.
Aunque pienso que si lo restringes a un tamaño en el papel, y lo ajustas a ese tamaño, debe salir bien aunque se haya escaneado más grande o más pequeño. |
#7
|
|||
|
|||
El tamaño del hueco en la página lo tengo fijo a 600x700 px. Ahora se trata de meter la imagen ahí sin deformarla y a tamaño real, de forma que si la imagen real resultase más grande que ese hueco, se cortaría lo que sobrase centrándola, si es menor, pues habrá parte blanca alrededor, pero en cualquier caso la imagen pintada debería corresponder con el original real.
No puedo prefijar un valor porque los tamaños de las imágenes que me van a llegar no son fijos sino que pueden variar de unos a otros. Tengo que buscar una fórmula a partir de la resolución de la imagen y los puntos por pulgada (pienso yo) que me de un tamaño de imagen correcto para que al imprimirse salga bien. Es lo único que se me ocurre, pues realmente esperaba que saliera bien sin tener que hacer nada. |
#8
|
||||
|
||||
Estamos hablando de 3 dispositivos: escaner, pantalla e impresora. Ahí tendrás que pelearte mucho con los dpi (dot per inch al escanear la imagen), ppp (puntos por pulgadas en pantalla) y por último los dpi (calidad de impresión) de la impresora de destino...
En ReportMan, se usaban siempre la unidad "Twip" como medida independiente del dispositivo, así, te permitía trabajar de forma fácil. Mira en FastReport si tiene algo parecido. Ni que decir tiene que al menos al escanear e imprimir, debes hacerlo con el mismo dpi. Si usas componentes en pantalla, mira si tiene algo de ppp (vendrá como PixelPerInch). Hay muchas rutinas de conversión entre ppp, dpi y tal... creo las podrás encontrar por twipsToPixels y PixelsToTwips en google A las malas, otra cosa que se suele hacer es poner una regla (de esas de la escuela) sobre el escaner, de forma que escaneas la imagen y esa regla. Después en el programa tendrías una opción de "calibrar" (donde el usuario marca 2 puntos en la imagen (en 0cm y 10 cm de la regla) y esa distancia te sirve para mostrar la imagen en cm en pantalla y en la impresora. Nunca te fíes del ancho en pixels, ya que eso varía en pantalla/impresora/scanner. Suerte y lamento no tener la respuesta exacta, no uso FastReport aún.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#9
|
|||
|
|||
Hola. Gracias por las respuestas.
Al final creo que he dado con la forma de hacerlo. Al menos una que me sirve y creo que es suficiente. A partir del fichero jpg obtengo los parámetros de altura y anchura de la imagen más la resolución en ppp para X e Y. Esto se obtienen leyendo la cabecera del fichero, así que he tenido que incluir el código para interpretar las cabeceras de ficheros jpg. En concreto para los modos JFIF y EXIF, que son los que me estoy encontrando (desconozco si habrá más modos). Con esta información procedo de la forma siguiente: - Obtengo el tamaño real impreso, que se calcula dividiendo la altura y anchura entre los puntos por pulgada. El resultado que obtengo es en pulgadas que paso a cm. - Con estos datos, calculo el tamaño en píxeles que debe tener la imagen en fastreport usando una constante que proporciona el propio fastreport que nos da la relación entre cm y pixeles. - Creo un componente de imagen que tenga las dimensiones calculadas anteriormente. - Así pues, con una imagen en jpg y un componente de imagen con un tamaño fijado, lo que hago es aplicar el strecthdraw para que el jpg tenga el tamaño del componente. Este resultado, cuando se ve en la vista previa y se imprime coincide perfectamente con el original real. Un saludo |
#10
|
|||
|
|||
Pues me posteo de nuevo porque no se ha resuelto.
He mejorado la calidad con un algoritmo de redimensionado de imagen mejor que el strechdraw por defecto que trae el bitmap, pero aunque la imagen redimensionada es correcta en tamaño es pobre en calidad. En Fast Report no veo ninguna opción para indicarle la densidad de impresión. La cuestión es que si yo quisiera imprimir una imagen en fast report pero con calidad, siempre la tendría que perder pues al aplicarse los ppp de pantalla en vez de los de impresión, la imagen sale grande y al reducirla para encajarla pierde toda la calidad. ¿Alguien le ocurre lo mismo con Fast Report? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Captura de imagen de algo no visible o fuera de la pantalla | Gimli | Gráficos | 2 | 13-12-2011 13:34:01 |
Comparar imagen en pantalla con otra imagen | gorgori | Gráficos | 4 | 24-12-2010 13:17:22 |
escala de imagen | robokop | Gráficos | 2 | 30-10-2006 11:53:02 |
Imagen a pantalla completa. | gynch | Gráficos | 2 | 16-04-2004 16:46:36 |
Como manipular los pixeles la matriz de valores en una imagen en escala de grises | erocha | Gráficos | 4 | 30-11-2003 06:20:32 |
|