Locator with Integer value coordinates [duplicate]

I want to get the Pixel value of an image.and here is my code

DynamicModule[{p = {50, 50}},
{Show[img, Graphics[Locator[Dynamic[p]]]],
ImageValue[img, Dynamic[p]]}]


and it came up with a warning that p is with a non integer value, to solve the problem ,I used Floor to get an integer value

DynamicModule[{p = {50, 50}},
{Show[img, Graphics[Locator[Dynamic[p]]]],
ImageValue[img,Floor/@Dynamic[p]]}]


this time it still doesnt work, with a warning:

    ImageValue::imgrng: The specified argument Floor[p\$20303] should be a pair of real or      integer numbers or a list of those.


My question is ,can I strict the loactor to Integer Domain?or is there any more elegent way to deal with this problem?

-

marked as duplicate by Mr.Wizard♦Jan 15 at 15:06

The approach is almost good. However Dynamic[p] has Head Dynamic and some functions are not able to cooperate with it so you have to move Dynamic outside. You may also want to take a look at related locator on a png file. (pay attention to the coordinates which are relevant in your case) –  Kuba Sep 10 '13 at 6:03
@Kuba,tks, as you said, I fixed the problem, it works well now –  tintin Sep 10 '13 at 6:05

The thing is that Floor[Dynamic[p]]would not work properly, so ImageValue can't be updated.
So, After moving the Dynamicout side the ImageValue,it works
DynamicModule[{p = {50, 50}},