This paper presents a feasible system for image fingerprinting. Two important problems of fingerprinting are the design collusion-secure codes and the watermarking strategies for the fingerprints. We address these problems by proposing hierarchical fingerprint codes and a content adaptive watermarking scheme. It is challenging to find a practical collusion-secure code for fingerprinting because of the trade-offs between the fingerprint code's length, its collusion resiliency, and the size of the customer base. Therefore, instead of pursuing a high-performance code, we construct a new fingerprint code by concatenating existing codes using a hierarchical structure. The resulting code is efficient in decoding, much shorter than existing codes for similar parameters, and thus practical for real systems. In the fingerprinting, the codes are often very long if the applicable colluder-resisting ability and large customer bases are needed. The resulting acute degradation of fingerprinted content may be unacceptable. Hence the long-length watermark must be appropriately embedded into images to preserve the image quality. We design a strength-decision algorithm, on the basis of neural networks, to adaptively embed the long-length fingerprints with suitable magnitudes into different image regions. This adaptive watermarking technique maintains the combination of robustness and imperceptibility without the effort of dealing with visual models. In addition, we analyze the disturbance due to collusion attacks on images and propose an optimization algorithm that can select better embedding positions to resist collusion attacks and preserve acceptable transparency of the watermark according to different multimedia contents. Experimental results show the high detection correctness of the traitor tracing. It implies that our fingerprinting system, constructed by applying a hierarchical fingerprint code to the content-adaptive watermarking scheme, is effective for multimedia application.