Cred ca provocarea e cum decizi daca linia si textul sunt negre sau albe.
Imaginea poate fi orice imagine (imaginea este uploadata de user)?
In acest caz cred ca nici mix-blend-mode nu ajuta, caci din ce inteleg linia, cercul si textul trebuie sa fie fie albe, fie negre in intregime, dar din ce stiu mix-blend-mode lucreaza la nivel de pixel, poate ma insel?
Cred ca ce iti trebuie este calcularea culorii dominante dintr-o imagine:
http://benhowdle.im/Adaptive-Backgrounds/
http://thesassway.com/intermediate/dynamically-change-text-color-based-on-its-background-with-sass (vezi si comment-urile)
http://codepen.io/aamirafridi/pen/gnxuf (desi culoarea textului are un efect de transparenta, nu este doar alb sau negru cum ai tu nevoie)
Legat de performanta, daca timeline-ul este de 20 ani x 3 intrari/an = 60 imagini.
Daca vrei sa faci in clientside trebuie sa vezi cat timp ia algoritmului de extragere al culorii dominante pentru o imagine. In loc sa aplici algoritmul la toate imaginile deodata, ai putea sa o aplici numai la imaginile care sunt in sau langa viewport (similar cu modul in care functioneaza lazy loading la imagini).
O alta optiune e sa calculezi culoarea dominanta pentru fiecare imagine direct pe backend, atunci cand imaginea este uploadata de user, astfel incat pe client deja stii daca trebuie folosit alb sau negru pentru linie, cerc si text.
O alta problema ar fi legata de desenarea cu o anumita culoare a liniei, cercului si textului doar pe imagine, in timp ce intre imagini este o alta culoare.
Avand in vedere ca imaginile iau oricum timp sa se incarce si userul poate face scroll in jos, frumos e ca linia, cercul si textul sa fie deja acolo (desenate cu negru daca fundalul paginii e alb) si apoi dupa ce imaginea se incarca, linia, cercul si textul de deasupra se schimba la culoare in functie de culoarea dominanta a imaginii.
O alta rezolvare mult mai simplista ar fi prin schimbarea designului, daca clientul e de acord: linia, cercul si textul sa fie umplte cu culoarea negru si aiba un edge alb. In felul asta merge peste orice imagine, nu ai nevoie sa stii culoarea dominanta. Dar nu stiu cat de bine arata, trebuie incercat in Photoshop.
Oricum ar fi, as incepe cu layoutul imaginilor, al liniei, cercului si textului care trebuie sa fie redimensionate dupa pagina. Apoi m-as gandi la culoarea in functie de imagine.
Hope this helps…