We present an image data-hiding scheme based on near-capacity dirty-paper codes. The scheme achieves high embedding rates by "hiding" information into mid-frequency DCT coefficients among each DCT block of the host image. To reduce the perceptual distortion due to data-hiding, the mid-frequency DCT coefficients are first perceptually scaled according to Watson's model. Then a rate-1/3 projection matrix in conjunction with a rate-1/5 capacity-approaching dirty-paper code is applied. We are able to embed 1500 information bits into 256×256 images, outperforming, under a Gaussian noise attack, currently the best known data-hiding scheme by 33%. Robustness tests against different attacks, such as low-pass filtering, image scaling, and lossy compression, show that our scheme is a good candidate for high-rate image data-hiding applications.