![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola Miguel!
Efectivamente la mejor opción es la que propone <Sergio>; por lo que comentas tu archivo solamente contiene los datos de la imagen, entonces la conversion es directa. Lo único que me gustaría agregar es la cuestión de la paleta de colores a escala de grises. Te pongo un ejemplo de como puedes generar una paleta simple.
Un saludo. |
|
#2
|
||||
|
||||
|
Héctor y Sergio,
Les agradezco mucho la ayuda. El método de Sergio es el más sencillo y efectivamente como comentas, Héctor, tenía problemas con la paleta; sin embargo, como lo voy a pasar a JPG, el bitmap lo creó a 24 bit por pixel y en un RGB con los cada canal al mismo valor tengo el gris correspondiente. Aparantemente estó no me implica mucha carga de procesamiento. Probaré la solución de Héctor a ver si hay diferencia en el desempeño. A continuación les muestro mi solución: Faltó comentar que el archivo de imagen RAW lo tengo en memoria en un arreglo de byte de 416*416. Código:
procedure ConvierteImagen;
var
BMP : TBitmap;
ContRenglon, ContColumna, ContImagen : integer;
Renglon : PByteArray;
begin
BMP := TBitmap.Create;
BMP.HandleType := bmDIB;
BMP.PixelFormat := pf24bit;
BMP.Width := 416;
BMP.Height := 416;
ContImagen := 0;
for ContRenglon := 0 to 415 do
begin
Renglon := BMP.ScanLine[ContRenglon];
for ContColumna := 0 to 415 do
begin
Renglon[ContColumna*3] := Imagen[ContImagen];
Renglon[ContColumna*3+1] := Imagen[ContImagen];
Renglon[ContColumna*3+2] := Imagen[ContImagen];
Inc(ContImagen);
end;
end;
BMP.SaveToFile('C:\HuellaPrueba.bmp');
BMP.Free;
end;
Gracias Miguel |
|
#3
|
|||
|
|||
|
Tip:
Ahora en tu ciclo interno lo único "pesado" son las multiplicaciones (que actualmente son mas "pesadas" que un salto corto).
Es mejor evitar multiplicaciones y divisiones al tratar cada pixel en la medida de lo posible. Por ejemplo se puede usar un while e incrementar contcolumna:
Última edición por <Sergio> fecha: 12-01-2005 a las 20:45:46. |
|
#4
|
||||
|
||||
|
Tienes mucha razón Sergio, modificaré mi código.
Muchas gracias y saludos Miguel |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|