En este grupo En todos

Foro de Delphi



convertir imagen a color a imagen de blanco y negro

Escrito por Kapullok_2006
el 30/08/2007

Hola  a todos,estoy buscando informacion de cómo hacer conversion de imagen a color a imagen blanco-negro en delphi 6.

No sé si con un componente o funcion me valdría para hacerlo,pues no encuentro nada. ¿Podéis darme alguna pista?


Saludos.


Pablo Abel Di Raddo
Programador basic 7.0 instituto super...
Escrito por Pablo Abel Di Raddo
el 02/07/2010

Para la ubicación y manipulación de archivos gráficos existe un control que se encarga de
ellos, este control es de la clase TImage. Un control de este tipo permite, entre otras
cosas, ajustar el BitMap a su tamaño o sólo visualizar, en el área definida, aquella porción
que quepa.
Alguna de las propiedades más importantes de los controles TImage, o al menos aquellos
que vamos a manejar en este ejemplo, son:
- AutoSize. Obvia el tamaño prefijado del control TImage, de tal forma que si el archivo
gráfico a visualizar es mayor que el área definida, ésta se ignora y el BMP ocupa el
total de su tamaño. Esto puede provocar, incluso, que ni la ventana pueda albergarlo,
por lo que, automáticamente, aparecerán en dicha ventana las barras de
desplazamiento oportunas.
- Center. Centra la imagen en el área definida, si no la sitúa en el ángulo superior
derecho.
- Picture. Mediante esta propiedad se asigna al control la imagen que se quiere
visualizar. Dado que lo que se pretende hacer es volcar el contenido de una imagen
seleccionada por nosotros, en este ejemplo se dejará en blanco dicha propiedad
Picture, y se asignará, en tiempo de ejecución, de la siguiente forma:
Imagen.Picture.LoadFromFile( <Archivo> );
- Stretch. Obliga a que el BMP se ajuste al tamaño fijado o, de no caber, se visualice
sólo lo que quepa en el área definida. Esta propiedad, que en principio es muy potente,
puede hacer que un BMP de gran tamaño quede reducido y distrosionado
excesivamente al ubicarlo en un recinto excesivamente pequeño. En nuestro caso lo
vamos a dejar a false, cediendo el control del tamaño a otro control auxiliar.
Precisamente porque los archivos gráficos pueden ser enormes o pequeños, apaisados u
horizontales, alargados, etc. , sería bueno reservar esa famosa zona de pantalla donde
ubicar el archivo, independientemente del formato de éste. Para este cometido se va a
recurrir a un control del tipo TScrollBox, y dentro de él ubicaremos la imagen (TImage).
La operativa a seguir es ubicar, en primer lugar, un TScrollBox y después un TImage dentro
de él. Esto hace que el control TImage quede constreñido al control padre y que, en ningún
caso, se pueda escapar de su recinto. Las propiedades que nos pueden interesar en los
controles de tipo TScrollBox son:
- AutoScroll. Pone, de manera automática y cuando sea necesario, barras de
desplazamiento vertical y horizontal. Poniéndolo a true conseguimos que, cuando la
imagen sea menor que el recuento definido, aparezca en su totalidad, y cuando no,
podamos desplazarlos para verla en su totalidad.
- BorderStyle: Tipo de marco que se va a utilizar, según los valores bSingle (tal como
aparece en la figura 2) y bNone (sin marco).
- Una vez ubicado el control TImage dentro de la caja TScrollBox hacemos que aquél se
ajuste al tamaño total de éste, lo cual se puede consigue con la propiedad Align de
TImage. Asignando a Align la constante alClient forzamos que toda la imagen se amolde al
tamaño de la caja, pero existe un pero; si visualizamos la imagen en tiempo de ejecución no
vamos a conseguir que aparezcan las mencionadas barras de desplazamiento. Estas
barras sólo aparecen cuando la propiedad Align está a alNone. Por lo tanto, en primera
instancia, podemos elegir alCliente (lo cual provocará que el editor de ventanas se
encargue de colocar y redimensionar TImagen a los contornos de la caja) e inmediatamente
después cambiarlo a alNone, para conseguir el efecto deseado en tiempo de ejecución.

Si necesitas más ayuda puedes ver mas ejemplo en la parte superior de este debate y

Si ya arreglastes tu problema entoces cierra este debate.


Pablo Abel Di Raddo
Programador basic 7.0 instituto super...
Escrito por Pablo Abel Di Raddo
el 09/07/2010

Sí necesitas mas ayuda inicia un nuevo debate.... Saludos.