No, they cannot.
An "output" is actually a one-time key-pair. It consists of a one-time public key, which resides on the blockchain, can be seen by everyone (but it can be matched to a wallet only by having the private view key and the public spend key), and acts as a container which holds some funds. It has a corresponding private key, which can be recovered only by the owning wallet.
This one-time private key is used to sign a transaction which spends that particular output.
Knowing a key image won't tell you this one-time private key, but it will only allow you to check that the same one-time private key has not been used more than once. You can't determine a private key from a key image, but knowing a key image you could tell if a 2nd signature was produced using the same one-time private key - without revealing the key itself. The mechanism is described on page 8 in the CryptoNote whitepaper.
To summarize:
- Wallet recognizes an output, using private view key and public spend key (page 7 of WP, check if
P = P'
)
- Wallet recovers the one-time private key, using private spend key (
b
) and shared secret (aR
) known from step 1. (page 8 of WP, x = H_s(aR) + b
- Wallet computes the key image, using the one-time key-pair (
I = xHp(P)
). (page 9 of WP)
- Wallet constructs a ring signature using one-time key-pair, foreign one-time public keys and the key image.
Trick is, to produce a proper signature, you need all 3 ingredients. Knowing the key image would let you know only if the same one-time private key tried to produce a 2nd signature. Somehow knowing the foreign one-time public keys would let you know which is the "real" public key getting spent (the remaining one). Knowing the one-time private key lets you produce a signature (you can construct a key image from it, and you can choose any number of public keys to ring yours with). Knowing only the public part of the one-time key and the key image lets you monitor for spent status of that output.
To answer the question, when you disclose a key image you kind of pre-announce the signature but never actually make it. The one who has only the key image and the matching one-time public key can now monitor for when you do make a signature which spends the output.