Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Gráficos
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 06/02/2008
NeoAnderson's Avatar
NeoAnderson NeoAnderson is offline
Miembro
 
Join Date: 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.
Reply With Quote
  #2  
Old 06/02/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
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

Last edited by cHackAll : 06/02/2008 at 21:35. Reason: Aclaración
Reply With Quote
  #3  
Old 07/02/2008
NeoAnderson's Avatar
NeoAnderson NeoAnderson is offline
Miembro
 
Join Date: 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.
Reply With Quote
  #4  
Old 07/02/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Quote:
Originally Posted by NeoAnderson View Post
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
Reply With Quote
  #5  
Old 07/02/2008
NeoAnderson's Avatar
NeoAnderson NeoAnderson is offline
Miembro
 
Join Date: 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.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Donde se almacena el valor MAX ilichhernandez SQL 5 16/08/2007 23:18
No almacena cambios IBTABLE cesar_picazo Conexión con bases de datos 4 22/11/2005 20:53
Scanline - BMP Monocromo fmtidona Gráficos 2 20/10/2005 16:12
Saber exactamente cual es cual en un DBLookUpComboBox bustio OOP 3 03/02/2005 23:16
Un boton me lleva a un formulario y otro almacena. pepelu1975 OOP 3 11/02/2004 22:01


All times are GMT +2. The time now is 02:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi