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

8 respostas
mrapha

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?

8 Respostas

T

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?

mrapha

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

T

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.

mrapha

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.

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.

T
Vou ensinar uma coisa que se chama análise dimensional. Como eu  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.

T

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.

P

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

O java utiliza 72dpi

mrapha

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!

Criado 17 de agosto de 2009
Ultima resposta 17 de ago. de 2009
Respostas 8
Participantes 3