There is a thread from 2010 addressing this exact question: Silhouette a PNG image using CSS
However, I'm wondering is there is a cleaner / updated solution on how to do this. Essentially I have images with transparent background. On first view, I would like the image to be masked with black. On click (or other action), the underlying image is revealed.