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 06-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Question Qué se almacena exactamente con un Scanline??

Hola nuevamente, bueno, pues estuve buscando por la red informacion sobre el ScanLine y aprendí a utilizarlo para manipular mas rapidamente una imagen, sin embargo no pude encontrar qué es exactamente lo que hace esta instruccion. Lo digo por lo siguiente: Yo tenía la idea de que con un Scanline, se almacenaban en un arreglo los canales rgb de manera consecutiva, por ejemplo, si tenía una imagen de 2x1 pixeles, con scanline tendría un arreglo resultante de la forma [r,g,b,r,g,b], pero me di cuenta de que esta idea funciona solo si tengo bmp de 24 bits, entonces, como puedo saber donde está el canal r, g y b en un bmp de digamos 8 o 32 bits usando Scanline? Espero no estar repitiendo este hilo, pero busqué en los foros y no encontré algo que me pudiera resolver esta duda.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 06-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Bueno... en primer lugar un ScanLine es una matriz (como ya lo expusiste); de la BMP interna asociada al lienzo (Canvas); como tambien te has percatado la forma de interpretar los datos de dicha matriz dependen del PixelFormat que es utilizado al momento de crear el Bitmap interno.

solo con 24 y 32 bits puedes objener el RGB tal yu como es; cuando es 32 es un DWORD (RGB?) donde "?" es un byte que no debemos tomar muy en cuenta por ahora, cuando es de 24 bits puedes obtener el RGB directamente.

El caso se complica cuando se utiliza 16 bits, en el cual solo hay 65536 colores, cosa que difiere de los 16777216 que el RGB te permite; entonces debes tomar la informacion como WORD.

Cuando son 8 bits hay 256 posibles colores para ello debes utilizar un BYTE para leer la informacion del color y dichos colores difieren al RGB en su totalidad.

Y para un BIT, pues un blanco y negro debes comprender que un byte tiene 8 pixeles de informacion.

Saludos

Última edición por cHackAll fecha: 06-02-2008 a las 21:35:29. Razón: Aclaración
Responder Con Cita
  #3  
Antiguo 07-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Gracias por tu respuesta cHackAll, me ayudo a entender mejor la situacion, sin embargo aun tengo el problema de obtener un rgb de una imagen de 8 o 16 bits. Quisiera poder abrir un bmp sin importar su profundidad en bits y transformarlo a 24 bits para manipularlo como rgb, yo creo que si se puede, pero no se aun cómo hacerlo. Espero puedan ayudarme, y gracias nuevamente.
Responder Con Cita
  #4  
Antiguo 07-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por NeoAnderson Ver Mensaje
Gracias por tu respuesta cHackAll, me ayudo a entender mejor la situacion, sin embargo aun tengo el problema de obtener un rgb de una imagen de 8 o 16 bits. Quisiera poder abrir un bmp sin importar su profundidad en bits y transformarlo a 24 bits para manipularlo como rgb, yo creo que si se puede, pero no se aun cómo hacerlo. Espero puedan ayudarme, y gracias nuevamente.
Ok; nbo veo mayor problema... tienes dos imagenes, ambas representan un Bitmap o un Canvas en todo caso... lo unico que debes hacer es una copia; puedes usar la API BitBlt; CopyRect o el método CopyRect propio de la clase TCanvas.

Copias de una imagen de 8 bits a una de 24 bits y viceversa (luego de hacer la edicion claro esta)

Saludos
Responder Con Cita
  #5  
Antiguo 07-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Thumbs up Problema Solucionado!

Gracias nuevamente por tu pronta respuesta chackAll, efectivamente funciona la solucion que me diste, y tambien quiero agregar que otra forma de solucionarlo que me funcionó fue lo siguiente.

Código Delphi [-]
var Bitmap:TBitmap;
begin
     Bitmap:=TBitmap.Create;
     Bitmap:=LoadFromFile(ruta);
     Bitmap.PixelFormat:=pf24bit;
     //...y despues todas las manipulaciones rgb que quiera
end;
Con esto puedo cargar cualquier mapa de bits de cualquier profundidad y puedo trabajarlo con formato de 24 bits.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Donde se almacena el valor MAX ilichhernandez SQL 5 16-08-2007 23:18:05
No almacena cambios IBTABLE cesar_picazo Conexión con bases de datos 4 22-11-2005 20:53:06
Scanline - BMP Monocromo fmtidona Gráficos 2 20-10-2005 16:12:11
Saber exactamente cual es cual en un DBLookUpComboBox bustio OOP 3 03-02-2005 23:16:58
Un boton me lleva a un formulario y otro almacena. pepelu1975 OOP 3 11-02-2004 22:01:27


La franja horaria es GMT +2. Ahora son las 06:09:23.


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