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 16-12-2005
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
Averiguar los bytes horizontales y verticales de una imagen

Hola, me gustaría saber como puedo averiguar el número de bytes horizontales y verticales que ocupa un bitmap, es decir, si un bitmap 16x16 significa (creo) que ocupa 16 pixels en horizontal y 16 pixels en vertical, obtener algo equivalente pero en bytes.

Espero haber explicado el problema con claridad.

Muchas gracias de antemano
Responder Con Cita
  #2  
Antiguo 16-12-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No acabo de enterderte bien;
No hay correspondencia directa entre pixels y bytes, ya que en esa relación entra también el nivel de color de la imagen; Una imagen en monocormo de 16x16 tendrá una corespondencia en bytes diferente a la misma imagen de 16x16 en 16 colores, en 256 colores,...

Otra cosa que tampoco acabo de entender es lo de bytes horizontales y verticales; Byte no es una dimensión que se mida en dos direcciones; Es como decir cuantos kilos horizontales y kilos verticales pesa un saco de arena...?¿?¿?¿

Seguro que es que no te he entendido; Tal ves si pones un ejemplo...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-12-2005
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
A ver si me puedo explicar con un poco más de claridad:

Si una imagen es como un rectángulo, cada byte que representa esta imagen representará una posición (x,y) de este rectángulo ¿no?. Pues bien, lo que yo necesito saber es cuantos bytes caben o o se necesitan para representar una fila de este rectángulo (ancho de la imagen) y lo mismo para una columna (alto de la imagen).
Entiendo que el fichero de bytes que representa la imagen siempre tiene el mismo tamaño, independientemente de los colores utilizados

Sé que es un poco difícil de entender pero lo necesito para poder ejecutar la secuencia de escape "FS q" sobre una impresora de tickets, o sea que si alguien sabe como ejecutar esta secuencia correctamente, se lo agradecería enormemente.

A lo mejor digo alguna barbaridad, pero es lo que me indican las especificaciones de esta secuencia y no estoy muy dado en el tema...

Muchas gracias.
Responder Con Cita
  #4  
Antiguo 16-12-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Javi2
...Entiendo que el fichero de bytes que representa la imagen siempre tiene el mismo tamaño, independientemente de los colores utilizados
Es que esa afirmacion no es correcta; Cuantos más colores se usan en un dibujo, más espacio se necesita para guardar un punto (x,y); No siempre se utiliza un Byte. Por ejemplo, si usas 2 colores basta con guardar para ese punto un 0 o un 1, pero si usas 256 colores, para guardar un punto necesitas almacenar un nuemero entre 1 y 255 y así sucesivamente...
Haz una prueba sencilla; Coge el MSPaint, abre un archivo nuevo y sin dibujar nada guardalo con 2 colores, con 16, con 256,... y verás como el tamaño del fichero cambia en disco.

En cuanto a la secuencia de escape, lo siento, pero no puedo ayudarte.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 16-12-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Javi2
...Entiendo que el fichero de bytes que representa la imagen siempre tiene el mismo tamaño, independientemente de los colores utilizados
Es que esa afirmacion no es correcta; Cuantos más colores se usan en un dibujo, más espacio se necesita para guardar un punto (x,y); No siempre se utiliza un Byte. Por ejemplo, si usas 2 colores basta con guardar para ese punto un 0 o un 1, pero si usas 256 colores, para guardar un punto necesitas almacenar un numero entre 1 y 255 y así sucesivamente...
Haz una prueba sencilla; Coge el MSPaint, abre un archivo nuevo y sin dibujar nada guardalo con 2 colores, con 16, con 256,... y verás como el tamaño del fichero cambia en disco.

En cuanto a la secuencia de escape, lo siento, pero no puedo ayudarte.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 16-12-2005
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
No te preocupes, creo que he encontrado algo que me puede servir (todavía tengo que probarlo). Se trata de la propiedad Pixelformat de un Bitmap, la cual creo que indica los bits utilizados para guardar la información relativa a un pixel.

Muchas gracias por tu ayuda.

De todos modos, si alguien conoce el funcionamiento de la secuencia de escape "FS q", agradecería que me lo comunicara ya que en Internet existe poquísima información al respecto.

Un saludo
Responder Con Cita
  #7  
Antiguo 17-12-2005
Athanatos Athanatos is offline
Miembro
 
Registrado: ago 2005
Posts: 33
Poder: 0
Athanatos Va por buen camino
Cita:
Empezado por Neftali
Es que esa afirmacion no es correcta; Cuantos más colores se usan en un dibujo, más espacio se necesita para guardar un punto (x,y); No siempre se utiliza un Byte. Por ejemplo, si usas 2 colores basta con guardar para ese punto un 0 o un 1, pero si usas 256 colores, para guardar un punto necesitas almacenar un nuemero entre 1 y 255 y así sucesivamente...
Haz una prueba sencilla; Coge el MSPaint, abre un archivo nuevo y sin dibujar nada guardalo con 2 colores, con 16, con 256,... y verás como el tamaño del fichero cambia en disco.

En cuanto a la secuencia de escape, lo siento, pero no puedo ayudarte.
¿Por que no imprimes usando windows? (si la impresora tiene los drivers correspondientes claro esta) Segun recuerdo definir el grafico que quieres imprimir no es más complicado que copiar un bitmap de un canvas a otro canvas y configurar un montón de opciones.

Efectivamente con el atributo de bits por pixel puedes calcular el tamaño que ocupa un pixel, pero posiblemente para imprimirlo tengas que fijar el numero de bits por pixel en 1. Conversion que la puedes hacer fijando dicha propiedad. A parte tienes que tomar en cuenta que generalmente existe alineamiento de bytes por linea. Es decir si una linea ocupa, digamos 487 bits (1 bit por pixel), será alineado a 1, 2 o 4 bytes dependiendo del caso (generalmente a 4 bytes pero podria que se alinee a 1 byte), ocupando cada linea 61, 62 y 64 bytes respectivamente.
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


La franja horaria es GMT +2. Ahora son las 11:33:09.


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