Por favor, lembre-se que esta tradução da especificação é resultado de um projeto da comunidade java.net( https://jdk5-api-pt-br.dev.java.net/). A versão oficial da especificação é a versão na língua inglesa que pode ser encontrada em http://java.sun.com/j2se/1.5.0/docs/api/. Em caso de divergências, a versão predominante da especificação é a original em inglês.

Please note that this translation of the specification is the result of a java.net community project ( https://jdk5-api-pt-br.dev.java.net/ ). The official version of the specification is the US English language version which can be found at http://java.sun.com/j2se/1.5.0/docs/api/. In case of disputes, the authoritative version of the specification is the original, English document.


JavaTM 2 Platform
Standard Ed. 5.0

java.awt.color
Class ICC_ColorSpace

java.lang.Object
  extended by java.awt.color.ColorSpace
      extended by java.awt.color.ICC_ColorSpace
All Implemented Interfaces:
Serializable

public class ICC_ColorSpace
extends ColorSpace

A classe ICC_ColorSpace é uma implementação da classe abstrata ColorSpace. Esta respresentação de dispositivos independentes e dependentes de espaços de cor é baseada no International Color Consortium Specification ICC.1:2001-12, para formato de arquivo de perfis de cor (ver o href= " http://www.color.org " do http://www.color.org ).

Tipicamente, um Color ou um ColorModel deve ser associado a um perfil ICC em qualquer entrada, tela, ou perfil da saída (ver a especificação ICC). Há outros tipos de perfis de ICC, por exemplo: perfis abstratos, perfis de ligação de dispositivo, e perfis de cor por nomes, que não contêm informação apropriada para representar o espaço de cor de uma determinada cor, de uma imagem, ou de um dispositivo (ver ICC_Profile). Tentar criar um objeto ICC_ColorSpace de um perfil ICC impróprio é um erro.

Os perfis ICC representam transformações do espaço de cor de perfil (por exemplo, um monitor) para um Profile Connection Space (PCS). Os perfis para o intuito de etiquetar imagens ou cores têm PCS que é um dos espaços independentes de dispositivo (um espaço de CIEXYZ e dois espaços de CIELab) definidos na especificação do formato do perfil ICC Profile Format Specification. A maioria dos perfis de interesse têm transformações invertidas ou especificam explicitamente as transformações em ambas as direções. Se um objeto ICC_ColorSpace for usado de uma maneira que requeira uma conversão de PCS para o espaço nativo do perfil, e existir dados inadequados para executar corretamente a conversão, o objeto ICC_ColorSpace produzirá a saída no tipo especificado do espaço de cor (por exemplo TYPE_RGB, TYPE_CMYK, etc.), mas os valores específicos da cor nos dados de saída serão indefinidos.

Os detalhes desta classe não são importantes para simples applets, que desenham em um espaço de cor padrão ou manipulam e exibem imagens importadas com um espaço de cor conhecido. Na maioria das vezes, tais applets necessitariam iniciar um dos espaços de cor padrão através do ColorSpace.getInstance().

See Also:
ColorSpace, ICC_Profile, Serialized Form

Field Summary
 
Fields inherited from class java.awt.color.ColorSpace
CS_CIEXYZ, CS_GRAY, CS_LINEAR_RGB, CS_PYCC, CS_sRGB, TYPE_2CLR, TYPE_3CLR, TYPE_4CLR, TYPE_5CLR, TYPE_6CLR, TYPE_7CLR, TYPE_8CLR, TYPE_9CLR, TYPE_ACLR, TYPE_BCLR, TYPE_CCLR, TYPE_CMY, TYPE_CMYK, TYPE_DCLR, TYPE_ECLR, TYPE_FCLR, TYPE_GRAY, TYPE_HLS, TYPE_HSV, TYPE_Lab, TYPE_Luv, TYPE_RGB, TYPE_XYZ, TYPE_YCbCr, TYPE_Yxy
 
Constructor Summary
ICC_ColorSpace(ICC_Profile profile)
          Constrói um novo ICC_ColorSpace de um objeto de ICC_Profile.
 
Method Summary
 float[] fromCIEXYZ(float[] colorvalue)
          Transforma um valor da cor assumida para estar no espaço de cor de conversão CS_CIEXYZ neste ColorSpace.
 float[] fromRGB(float[] rgbvalue)
          Transforma um valor da cor assumido para estar no espaço de cor CS_sRGB padrão em um valor deste ColorSpace.
 float getMaxValue(int component)
          Retorna o valor máximo normalizado do componente da cor para o componente especificado.
 float getMinValue(int component)
          Retorna o valor mínimo normalizado dos componentes da cor para o componente especificado.
 ICC_Profile getProfile()
          Retorna o ICC_Profile para esta ICC_ColorSpace.
 float[] toCIEXYZ(float[] colorvalue)
          Transforma um valor da cor assumido para estar neste ColorSpace em um valor do espaço de cor de conversão CS_CIEXYZ.
 float[] toRGB(float[] colorvalue)
          Transforma um valor da cor assumido para estar neste ColorSpace em um valor do espaço de cor CS_sRGB padrão.
 
Methods inherited from class java.awt.color.ColorSpace
getInstance, getName, getNumComponents, getType, isCS_sRGB
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ICC_ColorSpace

public ICC_ColorSpace(ICC_Profile profile)
Constrói um novo ICC_ColorSpace de um objeto de ICC_Profile.

Parameters:
profile - o objeto ICC_Profile especificado
Throws:
IllegalArgumentException - se o perfil for inapropriado para representar um ColorSpace.
Method Detail

getProfile

public ICC_Profile getProfile()
Retorna o ICC_Profile para esta ICC_ColorSpace.

Returns:
o ICC_Profile para esta ICC_ColorSpace.

toRGB

public float[] toRGB(float[] colorvalue)
Transforma um valor da cor assumido para estar neste ColorSpace em um valor do espaço de cor CS_sRGB padrão.

Este método transforma valores de cor usando os algoritmos projetados para produzir o melhor percentual de equivalência entre a entrada e saída de cores. A fim de fazer a conversão colorimétrica de valores de cor, você deve usar o toCIEXYZ, método deste espaço de cor, para primeiro converter do espaço de cor de entrada para o espaço de cor CS_CIEXYZ, e usar então o método fromCIEXYZ, do espaço de cor CS_sRGB, para converter de CS_CIEXYZ para o espaço de cor de saída. Veja toCIEXYZ e fromCIEXYZ para maiores informações.

Specified by:
toRGB in class ColorSpace
Parameters:
colorvalue - um array de números de ponto flutuante com comprimento de pelo menos o número dos componentes neste ColorSpace.
Returns:
um array de números de ponto flutuante de comprimento 3.
Throws:
ArrayIndexOutOfBoundsException - se o comprimento do array não for de pelo menos o número de componentes deste ColorSpace.

fromRGB

public float[] fromRGB(float[] rgbvalue)
Transforma um valor da cor assumido para estar no espaço de cor CS_sRGB padrão em um valor deste ColorSpace.

Este método transforma valores de cor usando os algoritmos projetados para produzir o melhor percentual de equivalência entre a entrada e a saída de cores. A fim de fazer a conversão colorimétrica de valores de cor, você deve usar o método toCIEXYZ do espaço de cor CS_sRGB para primeiro converter do espaço de cor de entrada para o espaço de cor CS_CIEXYZ, e então usar o método fromCIEXYZ deste espaço de cor para converter de CS_CIEXYZ para o espaço de cor de saída. Ver toCIEXYZ e fromCIEXYZ para maiores informações.

Specified by:
fromRGB in class ColorSpace
Parameters:
rgbvalue - um array de números de ponto flutuante com comprimento de pelo menos 3.
Returns:
um array de numeros de ponto flutuante com o comprimento igual ao número de componentes deste ColorSpace.
Throws:
ArrayIndexOutOfBoundsException - se o comprimento do array não for de pelo menos 3.

toCIEXYZ

public float[] toCIEXYZ(float[] colorvalue)
Transforma um valor da cor assumido para estar neste ColorSpace em um valor do espaço de cor de conversão CS_CIEXYZ.

Este método transforma valores de cor usando colorimetria relativa, como definido pela ICC Specification. Isto significa que os valores de XYZ retornados por este método são representações relativas ao ponto branco D50 do espaço de cor CS_CIEXYZ. Esta respresentação é útil em um processo de duas etapas de conversão de cor em que as cores são transformadas de um espaço de cor de entrada CS_CIEXYZ, para em seguida, a um espaço de cor de saída. Esta respresentação não é a mesma dos valores XYZ que seriam medidos através de um colorímetro. Uma transformação adicional é necessária para computar os valores XYZ que seriam medidos usando práticas atuais recomendadas pelo CIE. Os parágrafos abaixo explicam isto mais detalhadamente.

Os padrões ICC são dispositivos independentes de espaço de cor (DICS) como o mecanismo para a converção de cor de um dispositivo para qualquer outro. Nesta arquitetura, as cores são convertidas do espaço de cor do dispositivo para ICC DICS e então do ICC DICS para o espaço de cor do dispositivo de destino. O padrão ICC define os perfis de dispositivo que contém as transformações que ocorrerão ao se converter entre o espaço de cor de um dispositivo e o ICC DICS. A conversão total das cores de um dispositivo fonte para as cores de um dispositivo do destino é feita conectando os transformadores do perfil device-to-DICS para o dispositivo fonte. Por esta razão, o ICC DICS é geralmente referciado como o perfil de espaço de conexão (PCS). O espaço de cor usado nos métodos toCIEXYZ e fromCIEXYZ, são os PCS de CIEXYZ definidos pelo ICC Specification. Este é também o espaço de cor representado pelo ColorSpace.CS_CIEXYZ.

Os valores XYZ de uma cor são representados frequentemente como relativo a algum ponto branco, assim o real significado dos valores XYZ não podem ser conhecidos sem saber o ponto branco daqueles valores. Isto é conhecido como colorimetria relativa. Os PCS usam um ponto branco de D50, assim os valoresXYZ dos PCS são realtivos ao D50. Por exemplo, o branco no PCS terá os valores XYZ de D50, que é definido para ser X=.9642, Y=1.000, e Z=0.8249. Este ponto branco é usado geralmente para aplicações em artes gráficas, mas outros são usados frequentemente em outras aplicações.

Para quantificar as características de cor de um dispositivo tais como uma impressora ou um monitor, as medidas dos valores XYZ são feitas tipicamente para cores particulares do dispositivo. Para o proposto nesta discussão, o termo "valores XYZ" do dispositivo são usados para significar os valores XYZ que seriam medidos em um dispositivo de cor usando práticas atuais recomendadas pelo CIE.

A converção entre valores XYZ de dispositivo e valores XYZ do PCS retornados por este método correspondem à converção entre o espaço de cor do dispositivo, representado pelos valores de colorimetria do CIE, e dos PCS. Há muitos fatores envolvidos neste processo, alguns dos quais são completamente sutis. O mais importante, entretanto, é o ajuste feito para esclarecer diferenças entre o ponto branco do dispositivo e o ponto branco dos PCS. Existem muitas técnicas para fazer isto e o assunto é objeto de muitas pesquisas e controvérsias. Alguns métodos geralmente usados são gradações de XYZ, o conversor Von Kries, e o conversor Bradford. O método apropriado para o uso depende de cada aplicação em particular.

O método mais simples é o de gradação de XYZ. Neste método cada valor XYZ do dispositivo é convertido a um valor XYZ de PCS pela multiplicação da relação de ponto branco do PCS (D50) com o ponto branco do dispositivo.

 
 Xd, Yd, Zd são os valores XYZ do dispositivo
 Xdw, Ydw, Zdw são os valores de ponto branco XYZ do dispositivo
 Xp, Yp, Zp são os valores XYZ do PCS
 Xd50, Yd50, Zd50 são os valores de ponto branco XYZ do PCS

 
 Xp = Xd * (Xd50 / Xdw)
 Yp = Yd * (Yd50 / Ydw)
 Zp = Zd * (Zd50 / Zdw)
 
 

A conversão de PCS para o dispositivo será feita pela inversão destas equações:

 
 Xd = Xp * (Xdw / Xd50)
 Yd = Yp * (Ydw / Yd50)
 Zd = Zp * (Zdw / Zd50)
 
 

Note que o rótulo do ponto branco da mídia em um perfil ICC não é o mesmo que o do ponto branco do dispositivo. O rótulo de ponto branco da mídia é expresso em valores dos PCS e usado para representar a diferença entre o XYZ de iluminação do dispositivo e o XYZ da mídia do dispositivo quando medido sob essa iluminação. O ponto branco do dispositivo é expresso como valores XYZ do dispositivo correspondendo ao branco mostrado pelo dispositivo. Por exemplo, ao mostrar a cor RGB (1.0, 1.0, 1.0) em um dispositivo sRGB, resultará em um valor XYZ medido pelo dispositivo D65. Este não será o mesmo valor XYZ do ponto branco do rótulo da mídia no perfil ICC para um dispositivo sRGB.

Specified by:
toCIEXYZ in class ColorSpace
Parameters:
colorvalue - um array de números de ponto flutuante com comprimento de pelo menos o número de componentes neste ColorSpace.
Returns:
um array de números de ponto flutuante de comprimento 3.
Throws:
ArrayIndexOutOfBoundsException - se o comprimento do array não for de pelo menos o número de componentes neste ColorSpace.

fromCIEXYZ

public float[] fromCIEXYZ(float[] colorvalue)
Transforma um valor da cor assumida para estar no espaço de cor de conversão CS_CIEXYZ neste ColorSpace.

Este método transforma valores de cor usando a colorimetria relativa, como definido pela ICC Specification. Isto significa que os valores do argumento XYZ obtidos por este método são representações relativas ao ponto branco D50 do espaço de cor CS_CIEXYZ. Esta representação é utilizada em um processo de conversão da cor em duas etapas em que as cores são transformadas de um espaço de cor de entrada CS_CIEXYZ e então para um espaço de cor de saída. Os valores da cor retornados por este método não são aqueles que seriam produzidos ao passar os valores XYZ ao método quando medidos por um colorímetro. Se você tiver valores XYZ correspondentes às medidas feitas usando as práticas atuais recomendadas pelo CIE, eles devem ser convertidos aos valores relativos D50 antes de ser passados a este método. Os parágrafos abaixo explicam isto mais detalhadamente.

O padrão ICC utilisa um dispositivo independente de espaço de cor(DICS) como um mecanismo para a conversão de cor de um dispositivo a outro. Nesta arquitetura, as cores são convertidas de um espaço de cor de um dispositivo fonte para o ICC DICS e então do ICC DICS para o espaço de cor de dispositivo de destino. O padrão ICC define os perfis de dispositivo que contêm as transformações que serão convertidas entre o espaço de cor de um dispositivo e do ICC DICS. A conversão total das cores de um dispositivo fonte às cores de um dispositivo do destino é feita conectando-se o transformador do perfil device-to-DICS do dispositivo fonte para o transformador do perfil DICS-to-device do dispositivo de destino. Por esta razão, o ICC DICS é geralmente referenciado para como se estabelecer a conexão com o perfil do espaço (PCS). O espaço de cor usado nos métodos toCIEXYZ e fromCIEXYZ é o CIEXYZ PCS definido pelo ICC Specification. Este é também o espaço de cor representado pelo ColorSpace.CS_CIEXYZ.

Os valores XYZ de uma cor são frequentemente representados como relativos a algum ponto branco, assim o real significado dos valores XYZ não pode ser conhecido sem se saber o ponto branco daqueles valores. Isto é conhecido como colorimetria relativa. Os PCS usam um ponto branco D50, assim os valores XYZ dos PCS são relativos a D50. Por exemplo, branco no PCS terá valores XYZ de D50, os quais são definidos para ser X=.9642, Y=1.000, e Z=0.8249. Este ponto branco é usado geralmente para aplicações em artes gráficas, mas outros são usados frequentemente em outras aplicações.

Para quantificar as características de cor de um dispositivo como uma impressora ou um monitor, as medidas de valores de cor XYZ para dispositivos particulares são feitas tipicamente. Para os propósitos desta discussão, o termo "valores XYZ" do dispositivo é usado para significar que os valores XYZ que seriam medidos das cores do dispositivo usam práticas atuais recomendadas pelo CIE.

Convertendo valores XYZ do dispositivo entre os valores XYZ dos PCS, tomados como argumentos por este método, corresponde a conversão entre o espaço de cor do dispositivo, como representado por valores de colorimetria do CIE, e dos PCS. Existem muitos fatores envolvidos neste processo, alguns dos quais muito sutis. O mais importante, entretanto, é o ajuste feito para esclarecer diferenças entre o ponto branco do dispositivo e do PCS. Há muitas técnicas para fazer isto e é assunto de muitas pesquisas e controvérsias. Alguns métodos geralmente usados são gradações de XYZ, o conversor von Kries, e o conversor Bradford. O método apropriado ao uso depende de cada aplicação em particular.

O método mais simples é o de gradação de XYZ. Neste método cada valor do dispositivo XYZ é convertido a um valor XYZ do PCS pela multiplicação da relação do ponto branco do PCS (D50) com o ponto branco do dispositivo.

 
 Xd, Yd, Zd são os valores XYZ do dispositivo
 Xdw, Ydw, Zdw são os valores do ponto branco XYZ do dispositivo
 Xp, Yp, Zp são os valores XYZ do PCS
 Xd50, Yd50, Zd50 são os valores do ponto branco XYZ do PCS

 
 Xp = Xd * (Xd50 / Xdw)
 Yp = Yd * (Yd50 / Ydw)
 Zp = Zd * (Zd50 / Zdw)
 
 

A conversão do PCS para o dispositivo será feita pela inverção destas equações:

 
 Xd = Xp * (Xdw / Xd50)
 Yd = Yp * (Ydw / Yd50)
 Zd = Zp * (Zdw / Zd50)
 
 

Note que o rótulo do ponto branco da mídia em um perfil ICC não é o mesmo que o ponto branco do dispositivo. O rótulo do ponto branco da mídia é expresso em valores PCS e usado para representar a diferença entre o XYZ de iluminação do dispositivo e o XYZ do dispositivo da mídia quando medido sob essa iluminação. O ponto branco do dispositivo é expresso como valores XYZ do dispositivo correspondendo ao branco mostrado no dispositivo. Por exemplo, mostrando a cor RGB (1.0, 1.0, 1.0) em um dispositivo de sRGB, resultará em um valor medido do dispositivo XYZ de D65. Este não será o mesmo valor que o do rótulo do ponto branco da mídia no perfil ICC para um dispositivo sRGB.

Specified by:
fromCIEXYZ in class ColorSpace
Parameters:
colorvalue - um array de números de ponto flutuante com comprimento de pelo menos 3.
Returns:
um array de número de ponto flutuante com comprimento igual ao número de componentes neste ColorSpace.
Throws:
ArrayIndexOutOfBoundsException - se o comprimento do array não for de pelo menos 3.

getMinValue

public float getMinValue(int component)
Retorna o valor mínimo normalizado dos componentes da cor para o componente especificado. Para espaços TYPE_XYZ, este método retorna valores mínimos de 0.0 para todos os componentes. Para espaços de TYPE_Lab, este método retorna 0.0 para L e -128.0 para os componentes a e b. Isto é compatível com a codificação XYZ e Lab Profile Connection Spaces na especificação ICC. Para todos os outros tipos, este método retorna 0.0 para todos os componentes. Ao usar um ICC_ColorSpace com um perfil que requeira valores mínimos diferentes para os componentes, é necessário que a subclasse desta classe sobrescreva este método.

Overrides:
getMinValue in class ColorSpace
Parameters:
component - O índice do componente.
Returns:
O valor mínimo normalizado do componente.
Throws:
IllegalArgumentException - se o componente for menor do que 0 ou maior do que numComponents - 1.
Since:
1.4

getMaxValue

public float getMaxValue(int component)
Retorna o valor máximo normalizado do componente da cor para o componente especificado. Para espaço TYPE_XYZ, este método retorna valores máximos de 1.0 + (32767.0/32768.0) para todos os componentes. Para espaços TYPE_Lab, este método retorna 100.0 para L e 127.0 para os componentes a e b. Isto é compatível com a codificação de XYZ e Lab Profile Connection Spaces na especificação ICC. Para todos os outros tipos, este método retorna 1.0 para todos os componentes. Ao usar um ICC_ColorSpace com um perfil que requeira valores máximos diferentes de componentes, é necessário que a subclasse desta classe sobrescreva este método.

Overrides:
getMaxValue in class ColorSpace
Parameters:
component - O índice do componente.
Returns:
O valor máximo normalizado do componente.
Throws:
IllegalArgumentException - se o componente for menor do que 0 ou maior do que numComponents - 1.
Since:
1.4

JavaTM 2 Platform
Standard Ed. 5.0

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.

Copyright 2006 Sun Microsystems, Inc. Todos os direitos reservados. O uso está sujeito aos termos da licensa.