We studied the evolution of opsin genes in 59 ray-finned fish genomes. We identified the opsin genes and adjacent genes (syntenies) in each genome. Then we inferred the changes in gene copy number (N), syntenies, and tuning sites along each phylogenetic branch during evolution. The Exorh (rod opsin) gene has been retained in 56 genomes. Rh1, the intronless rod opsin gene, first emerged in ancestral Actinopterygii, and N increased to 2 by the teleost-specific whole genome duplication, but then decreased to 1 in the ancestor of Neoteleostei fishes. For cone opsin genes, the rhodopsin-like (Rh2) and long-wave-sensitive (LWS) genes showed great variation in N among species, ranging from 0 to 5 and from 0 to 4, respectively. The two short-wave-sensitive genes, SWS1 and SWS2, were lost in 23 and 6 species, respectively. The syntenies involving LWS, SWS2 and Rh2 underwent complex changes, while the evolution of the other opsin gene syntenies was much simpler. Evolutionary adaptation in tuning sites under different living environments was discussed. Our study provides a detailed view of opsin gene gains and losses, synteny changes and tuning site changes during ray-finned fish evolution.