You could implement Patrick idea with:
ImageEnView1.IO.LoadFromFile('input.jpg');
ImageEnView1.LayersAdd();
ImageEnView1.CurrentLayer.Transparency := 128;
ImageEnView1.CurrentLayer.Operation := ielOverlay;
ImageEnView1.Proc.Random();
ImageEnView1.Proc.ConvertToGray();
ImageEnView1.LayersMergeAll();
Instead of Random() you could load the film grain image.