FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
modificar imágenes bmp
Hola amigos del foro:
Tengo una aplicación en donde necesito cambiar determinados colores de una imágen bmp o jpg, ¿alguien me puede dar una idea de como hacerlo?, gracias anticipadas. |
#2
|
|||
|
|||
Si tienes un JPG tienes que pasarlo a un objeto Tbitmap, del tipo "DIB=Device Independent Bitmap" (HandleType:=bmDIB a 8 o 24 bits por pixel según sea conveniente para recién modificarlo. Para convertirlo nuevamente en JPG pasas el bitmap a un objeto TJPEGImage.
Teniendo la imagen en un objeto Tbitmap, accedes a sus pixeles con "scanline[row]". Para copiar una imagen de otros bitmaps a este o viceversa lo haces con su objeto Tcanvas. Scanline te permite tener acceso rápido a una fila de pixeles del bitmap. Para mostrar tu bitmap en pantalla usa el evento onpaint del "form": Este ejemplo copia a memoria de video "elBitmap" ( de acuerdo a la posición y dimensiones del "form") puedes ver los parámetros de BitBlt en la ayuda. BitBlt(canvas.handle,0,0,width,height,elBitmap.canvas.handle,0,0,SRCCOPY); |
#3
|
|||
|
|||
modificar imágenes bmp
Cita:
|
#4
|
|||
|
|||
Cita:
Eso sería mejor hacerlo con un programa de manipulación de imágenes como GIMP (es freeware) www.gimp.org. Por que sino tendrías dos opciones: 1.- Que la máquina lo haga todo sola, lo que dudo que pueda hacerlo a menos que implementes en varios meses de trabajo lo más avanzado de reconocimiento de imágenes, tratamiento wavelet, I.A., etc para que reconozca que parte de la imagen es la camisa y forme una imágen en canal alpha* con dicha información. 2.- Que el usuario de alguna forma indique (por ejemplo pintando la camisa) un canal ALPHA* (1 byte por pixel) con información de ¿donde está esa camisa? * (Un bitmap de 8 bits sería suficiente: 255=si es la camisa, 0=definitivamente no es la camisa, el resto de los valores para evitar bordes toscos) De cualquier forma al final aplicas un filtro de color a tu imagen de acuerdo con el canal alpha. Una forma fácil sería multiplicar la zona por un color azul claro. Otra forma sería hacer cambio de formato de color de RGB a YIQ u otro similar que separa brillo de color y sólo cambiar el color, también de acuerdo al canal alpha. |
|
|
|