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 29-11-2005
JAV JAV is offline
Miembro
 
Registrado: mar 2005
Posts: 34
Poder: 0
JAV Va por buen camino
Question convertir BMP a 1bit

Hola amigos. Necesito convertir una imagen BMP de 8 bits, escala de grises, a un BMP de 1 bit. Estoy utilizando el método SCANLINE pero sin obtener buenos resultados. Por favor, si alguien conoce cómo realizarlo, desde ya muchas gracias...
Responder Con Cita
  #2  
Antiguo 29-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Una búsqueda por los foros devuelve esto. Puede que te sirva.
Responder Con Cita
  #3  
Antiguo 30-11-2005
JAV JAV is offline
Miembro
 
Registrado: mar 2005
Posts: 34
Poder: 0
JAV Va por buen camino
Gracias por los enlaces pero no encontré nada significativo. Este código lo utilizo y funciona, pero las imágenes que tengo que convertir son enormes. Este método con "Pixels" es muy lento. Alguien conoce el equivalente en "ScanLine"? Desde ya, muchas gracias.

Código Delphi [-]
var
  BMP1, BMP2: TBitmap;
begin
  BMP1 := TBitmap.Create;
  BMP1.LoadFromFile('C:\bitmap.bmp'); //Imagen de 8 bits
  BMP2 := TBitmap.Create;
  BMP2.PixelFormat := pf1bit;
  BMP2.Height := BMP1.Height;
  BMP2.Width := BMP1.Width;
  for X := 0 to BMP1.Width - 1 do
    for Y := 0 to BMP1.Height - 1 do
      BMP2.Canvas.Pixels[X, Y] := BMP1.Canvas.Pixels[X, Y];
  BMP1.Free;
end;

Última edición por dec fecha: 30-11-2005 a las 19:30:09. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #4  
Antiguo 20-02-2011
CCCP CCCP is offline
Miembro
 
Registrado: dic 2004
Ubicación: Barcelona
Posts: 38
Poder: 0
CCCP Va por buen camino
a ver si te vale

Código Delphi [-]
procedure GrayScale(PICT: TPicture);
  const
    MaxPixelCount = 32768;
  type
    pRGBArray = ^TRGBArray;
    TRGBArray = ARRAY[0..MaxPixelCount-1] of TRGBTriple;
  var
    i, j, Colr : Integer;
    sl : pRGBArray;  // Scanline
    bmp : TBitmap;
  begin
    bmp := TBitmap.Create;
    try
      bmp.PixelFormat := pf24bit;
      bmp.Width := PICT.Graphic.Width;
      bmp.Height := PICT.Graphic.Height;
      bmp.Canvas.Draw(0,0,PICT.Graphic);
      if bmp.PixelFormat <> pf24bit then begin
        // ShowMessage('Not a 24Bit color bitmap!');
        Exit;
      end;
      for j:=0 to bmp.Height-1 do begin
        sl := bmp.ScanLine[j];
        for i:=0 to bmp.Width-1 do begin
          Colr:=HiByte(sl[i].rgbtRed * 77 + sl[i].rgbtGreen * 151 +
             sl[i].rgbtBlue * 28);
          sl[i].rgbtRed := Colr;
          sl[i].rgbtGreen := Colr;
          sl[i].rgbtBlue := Colr;
        end;
      end;
      PICT.Assign(bmp);
    finally
      bmp.Free;
    end;
  end;

Última edición por ecfisa fecha: 21-02-2011 a las 11:46:10. Razón: ETIQUETAS DELPHI
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


La franja horaria es GMT +2. Ahora son las 16:55:30.


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