Conversão de pixel de imagem para centímetros reais

Bom dia!

Como faço para converter o tamanho obtido pelos getWidth() e getHeight(), ambos de um BufferedImage, para centímetros reais?

Atualmente tentei isso mas não funcionou:

double ppp = Toolkit.getDefaultToolkit().getScreenResolution();
double alturaCm = crop.getHeight() / ppp;
double larguraCm = crop.getWidth() / ppp;

Alguém pode me ajudar?

getScreenResolution volta um número (normalmente 96) que é o número de pixels por polegada. Como uma polegada é 2,54 cm você pode fazer as contas, não?

Acredito que sim! Mas que conta eu preciso fazer pra chegar ao resultado?

Você sabe o número de pixels (que é dado por getHeight ou getWidth), o número de pixels por polegada, e o número de centímetros por polegada.

Faça as contas de divisão e/ou multiplicação, por favor.

[quote=thingol]Você sabe o número de pixels (que é dado por getHeight ou getWidth), o número de pixels por polegada, e o número de centímetros por polegada.

Faça as contas de divisão e/ou multiplicação, por favor. [/quote]

Olá Thingol!

Eu fiz este cálculo:

double ppp = Toolkit.getDefaultToolkit().getScreenResolution();

double alturaCm = (crop.getHeight() / ppp) * 2.54;
double larguraCm = (crop.getWidth() / ppp) * 2.54;

porém, as medidas retornadas não conferem com as medidas do documento impresso.

Vou ensinar uma coisa que se chama “análise dimensional”. Como eu já disse, você tem:
a) O número de pixels (digamos que seja 192);
b) O número de pixels por polegada (96) - ou seja, o número de polegadas por pixel é 1.0/96.0
c) O número de centímetros por polegada (2,54)

Você tem o número de pixels, e precisa saber o número de centímetros.

Primeiro você converte o número de pixels para polegadas:

pixels x (polegadas / pixel) == polegadas

Aí você converte o número de polegadas para centímetros:

polegadas x (centimetros / polegada) == centímetros

No seu caso, vai dar 192 * 1.0 / 96.0 * 2.54 == 5.08 cm.

Não é para bater, já que você pediu a resolução da tela (96dpi), não a do documento impresso (que é normalmente 300 ou 600dpi). Você não pode usar getScreenSize mas alguma outra propriedade da IMPRESSORA, não da TELA.

Só para complementar o que o thingol falou!!!

O java utiliza 72dpi

Thingol e Plic_ploc,

muito obrigado pelas orientações!! Com elas consegui resolver o problema! Já obtive do cliente a resolução dpi utilizada por ele na impressão dos arquivos que serão mensurados e deixarei este campo como item configurável para que ele possa ajustar de acordo com a variação de dpis utilizada nas impressões.

Muito obrigado pelas orientações!
Um grande abraço!