2010-10-03 7 views
1

Avoir un peu d'un cerveau de gel sur la façon de le faire. J'ai une image d'une zone d'un terrain de football sur laquelle l'utilisateur clique pour indiquer où quelque chose s'est produit.Convertir des pixels en cm relatif à partir d'une image cliquable?

Je veux stocker les coordonnées dans les unités du monde réel dans ma base de données afin que je puisse changer l'image plus tard. Cependant, je ne peux pas comprendre la formule pour faire cela (en ignorant le fait qu'un terrain de football a une longueur variable). Donc, disons que mon image est de 400 px par 300px représentant un champ réel de 12000cm x 9000cm, quel serait le point 300px, 100px en centimètres? Comment puis-je convertir cette valeur cm en px sur une image de 800x600 px? Le faire en yards/pouces serait également acceptable.

S'il vous plaît me montrer le travail plutôt que les valeurs individuelles. Merci!

Répondre

2

comme toute autre conversion d'unité: 300 * 12000/400, 100 * 9000/300 est le point où l'utilisateur clique dans le terrain de football. Plus généralement, en supposant que les deux échelles ont les mêmes zéros (c'est-à-dire 0 source == 0 target) et que vous connaissiez un point où les échelles sont égales à x source == y target, alors valueInTarget = valueInSource * (y/x).

Encore plus généralement, en supposant que vous connaissiez deux points où deux échelles sont égales, c'est-à-dire x1 source == y1 target et x2 source == y2 target, puis valueInTarget == (valueInSource - x1) * (y2 - y1)/(x2 - x1) + y1 == (valueInSource - x2) * (y1 - y2)/(x1 - x2) + y2.

2

Utiliser les ratios. 400px représentent 12000cm, donc votre rapport de largeur est de 30 centimètres par pixel. L'application de ce ratio à 300px nous donne 9000cm.

Dans le deuxième exemple, le rapport de la largeur est de 15 centimètres par pixel (12000/800). Donc 9000cm donne 600px sur la deuxième image.

La même chose vaut pour la hauteur.