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. |
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); |
modificar imágenes bmp
Cita:
|
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. |
La franja horaria es GMT +2. Ahora son las 20:48:28. |
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