Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 22
Héctor Randolph Va por buen camino
Cita:
Empezado por Neftalí
Eso me lleva a una pregunta. ¿Está definida esa "escala de sepia"?

Por ejemplo, la escala de Grises se obtiene asignando el mismo valor a los tres colores principales(R,G,B); Variando esos valores (pero siempre iguales en los tres) se obtienen los Grises. ¿Hay algo parecido para la escala de Sepia? ¿debe haber una especificación?
Hola a todos!

Con respecto a esta cuestión sólo quisiera añadir algo, es posible crear una escala de tonos sepia a nuestra conveniencia, es decir asi como hay una escala de 256 tonos de gris podemos crear una escala de 256 tonos en sepia, rojo, amarillo, azul, etc.

Aqui pongo un ejemplo de una escala de 256 tonos en sepia, en realidad solamente tomé un gradiente que comienza con café oscuro y que pasa por amarillos hasta llegar a blanco.

Código Delphi [-]
const
  TSepiaTonos: array[0..255] of TColor=(
  $71730, $71831, $81932, $91A33, $A1B34, $B1C36, $C1D37, $D1E38,
  $E2039, $E213A, $F223C, $10233D, $11243E, $12253F, $132640, $142742,
  $152943, $152A44, $162B45, $172C46, $182D48, $192E49, $1A2F4A, $1B304B,
  $1C324C, $1C334E, $1D344F, $1E3550, $1F3651, $203752, $213854, $223955,
  $233B56, $233C57, $243D58, $253E5A, $263F5B, $27405C, $28415D, $29425E,
  $2A4460, $2A4561, $2B4662, $2C4763, $2D4864, $2E4966, $2F4A67, $304B68,
  $314D69, $314E6A, $324F6C, $33506D, $34516E, $35526F, $365370, $375472,
  $385673, $385774, $395875, $3A5976, $3B5A78, $3C5B79, $3D5C7A, $3E5D7B,
  $3F5F7D, $3F607E, $40617F, $416280, $426381, $436483, $446584, $456685,
  $466886, $466987, $476A89, $486B8A, $496C8B, $4A6D8C, $4B6E8D, $4C6F8F,
  $4D7190, $4D7291, $4E7392, $4F7493, $507595, $517696, $527797, $537898,
  $547A99, $547B9B, $557C9C, $567D9D, $577E9E, $587F9F, $5980A1, $5A81A2,
  $5B83A3, $5B84A4, $5C85A5, $5D86A7, $5E87A8, $5F88A9, $6089AA, $618AAB,
  $628CAD, $628DAE, $638EAF, $648FB0, $6590B1, $6691B3, $6792B4, $6893B5,
  $6995B6, $6996B7, $6A97B9, $6B98BA, $6C99BB, $6D9ABC, $6E9BBD, $6F9CBF,
  $709EC0, $709FC1, $71A0C2, $72A1C3, $73A2C5, $74A3C6, $75A4C7, $76A5C8,
  $77A7CA, $77A7CA, $78A7CA, $79A8CA, $7AA9CB, $7BA9CB, $7CAACC, $7DABCC,
  $7EABCC, $7FACCD, $80ADCD, $81ADCE, $82AECE, $83AFCF, $85B0CF, $86B0CF,
  $87B1D0, $88B2D0, $89B2D1, $8AB3D1, $8BB4D1, $8CB4D2, $8DB5D2, $8EB6D3,
  $8FB7D3, $90B7D4, $91B8D4, $93B9D4, $94B9D5, $95BAD5, $96BBD6, $97BBD6,
  $98BCD7, $99BDD7, $9ABED7, $9BBED8, $9CBFD8, $9DC0D9, $9EC0D9, $A0C1D9,
  $A1C2DA, $A2C2DA, $A3C3DB, $A4C4DB, $A5C5DC, $A6C5DC, $A7C6DC, $A8C7DD,
  $A9C7DD, $AAC8DE, $ABC9DE, $ACC9DF, $AECADF, $AFCBDF, $B0CCE0, $B1CCE0,
  $B2CDE1, $B3CEE1, $B4CEE1, $B5CFE2, $B6D0E2, $B7D0E3, $B8D1E3, $B9D2E4,
  $BBD3E4, $BCD3E4, $BDD4E5, $BED5E5, $BFD5E6, $C0D6E6, $C1D7E7, $C2D7E7,
  $C3D8E7, $C4D9E8, $C5D9E8, $C6DAE9, $C7DBE9, $C9DCE9, $CADCEA, $CBDDEA,
  $CCDEEB, $CDDEEB, $CEDFEC, $CFE0EC, $D0E0EC, $D1E1ED, $D2E2ED, $D3E3EE,
  $D4E3EE, $D5E4EF, $D7E5EF, $D8E5EF, $D9E6F0, $DAE7F0, $DBE7F1, $DCE8F1,
  $DDE9F1, $DEEAF2, $DFEAF2, $E0EBF3, $E1ECF3, $E2ECF4, $E4EDF4, $E5EEF4,
  $E6EEF5, $E7EFF5, $E8F0F6, $E9F1F6, $EAF1F7, $EBF2F7, $ECF3F7, $EDF3F8,
  $EEF4F8, $EFF5F9, $F0F5F9, $F2F6F9, $F3F7FA, $F4F8FA, $F5F8FB, $F6F9FB,
  $F7FAFC, $F8FAFC, $F9FBFC, $FAFCFD, $FBFCFD, $FCFDFE, $FDFEFE, $FFFFFF);


Ahora la cuestión sola es tomar un vector de componentes de color (R,G,B) y aplicar una transformación que convierta a escala de 256 grises como las que han recomendado en este hilo.

Voy a tomar el producto punto como ejemplo:

GRIS=(R,G,B).(0.30,0.59,0.11)=R*0.30+G*0.59+B*0.11

Esto nos dará un valor entre [0..255] correspondiente a un color en la escala de 256 tonos de gris.

Ahora sólo buscamos el equivalente en la escala de 256 tonos sepia que construimos.

NuevoColor=TonosSepia[GRIS]

Un ejemplo de como aplicarlo sería

Código Delphi [-]
type
  TRGBArray = array[0..32767] of TRGBTriple;
  PRGBArray = ^TRGBArray;
procedure TForm1.Button3Click(Sender: TObject);
var
 Row: PRGBArray;
 y,x,Gris: Integer;
begin
  Image1.Picture.Bitmap.PixelFormat := pf24Bit;
  for y := 0 to Image1.Picture.Bitmap.Height - 1 do
  begin
    Row := Image1.Picture.Bitmap.ScanLine[y];
    for x := 0 to Image1.Picture.Bitmap.Width - 1 do
    begin
      Gris           := Round(Row[x].rgbtRed*0.3 + Row[x].rgbtGreen*0.59 + Row[x].rgbtBlue*0.11);
      Row[x].rgbtRed := GetRValue(ColorToRGB(TSepiaTonos[Gris]));
      Row[x].rgbtGreen := GetGValue(ColorToRGB(TSepiaTonos[Gris]));
      Row[x].rgbtBlue := GetBValue(ColorToRGB(TSepiaTonos[Gris]));
    end;
  end;
  Image1.Repaint;
end;

Es tan sólo un ejemplo, la escala de tonos la he creado arbitrariamente y cada quien puede definir su propia escala de acuerdo a su preferencia.

Un saludo y seguimos en contacto
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 21:00:29.


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