Archives for : Flash

Salvare de imagini din Flash?

Help, anyone?

De mult’shel ma chinui cu o problema: cum poti salva imagini din Flash? De incarcat o poza in Flash, online, e simplu: uploadezi poza online dupa care o incarci. Deci Flash ARE API pentru scris poze pe disc. Problema este ca, din cate stiu eu, nu poate salva decat pozele de gen “upload”.
O posibila problema ar fi incarcarea imaginii intr-un obiect de tip bitmap, apoi “descompunerea” bitmapului respectiv pixel cu pixel in valori RGB, urmata de trimiterea enormului string de date catre un script PHP care, cu ajutorul GD, sa recompuna imaginea si s-o salveze – ready for download.

Avantaje: doar unul – cu multa durere si chin pana la urma obtii ceea ce-ai vrut – sa salvezi imaginea facuta de tine in Flash, pentru ulterioare folosinte

Dezavantaje:
1. Timpul de upload enorm: chiar si cu mega-optimizari, stringul de variabile pentru o poza de 100x80px poate ajunge lejer la 7-800k – si creste exponential cu marimea imaginii. O poza de 800×640 ajunge la megi sau zeci de megi de “post data” de transmis – not feasible.
2. Puterea de calcul a Flashului. DA, exista algoritmi de compresie a textului pentru Flash, exista si algoritmi de decompresie a textului in PHP. Dar pentru o poza obisnuita (800×640) obtii o reducere a stringului de 60%, max 40%, ceea ce nu e mult deloc, si asta in conditiile in care ai rabdarea sa stai langa flashul respectiv cateva ore cat dureaza compresia respectiva (flashul sta TARE prost la handlingul de stringuri lungi)

Solutie alternativa?
Se pare ca exista: am vazut cu ochii mei, la fauxto, de care am dat prin gratiile celor doi grammos. Te inscrii frumushel acolo, iti uploadezi o poza, o modifici un pic (in Flash, cum altfel) dupa care o poti salva. Si dureaza 1-2 minute, nu 10-20 ore… Are idee cineva cum pisici au reusit sa faca asta baietii si fetitele de la fauxto?

Update: solutie mai eleganta la problema cu Flash > JS > IE6

Update la articolul Flash > Javascript > Kill IE:

M-au atras unii si altii atentia ca time-out-ul de 1-2 secunde despre care vorbeam este total irelevant pe o conexiune lenta, unde paginile se incarca in mai mult de 2 secunde. Asa e, pe conexiuni lente rezolvarea cu un mic timeout in Flash inaintea executarii js-ului nu e buna. Asa ca am mutat “timeout-ul” din Flash direct in JS:

1. Setam un setInterval:

var int = setInterval("action()",50);

2. Setam numele (name / id) SWF-ului in cauza, ca sa-l putem identifica si ca sa putem proba ca s-a incarcat in cache inainte de a trece mai departe:

var movieName = "flashul_meu";

3. Cream functia action():

function action() {
  //verificam daca swf-ul cu pricina s-a incarcat
  if (movieIsLoaded(thisMovie(movieName))) {
    mumu();  //apelam ce vroiam sa apelam din Flash 
    clearInterval(int); //stergem setInterval-ul
  }
}

Cam asta e. Codul respectiv il poti pune oriunde (la inceputul / la sfarsitul paginii, intr-un fisier js extern etc.) – el va rula in liniste pana la incarcarea swf-ului, dupa care se va auto-termina.

Flash > Javascript > Kill IE

O problema cu care m-am mai intalnit acum un an si ceva, de care uitasem si de care m-am lovit iar zilele astea:

Daca in primele 1-2 secunde de incarcare a unei pagini trimiti o comanda javascript dintr-un flash embed-at in acea pagina, IE5-6 opreste orice download in curs, rezultand o pagina incomplet incarcata

E o problema cam nedocumentata (cu exceptia catorva post-uri razlete pe net), si care, daca nu stii de ea, iti poate manca multi nervi si mult timp cautand sa intelegi ce-are loaza de IE de “moare” la incarcare. Problema e cu atat mai dureroasa atunci cand flashul respectiv este deja in cache: bunul-simt iti spune ca, fiind in cache, pagina ar trebui sa se incarce mai complet; dar flashul, actionand si el mai rapid, “taie” incarcarea paginii mai rapid si deci pagina rezulta si mai cheala. E o treaba a naibii de frustranta, repet, daca nu stii care e cauza (nu multa lume se gandeste ca un amarat de Flash ar putea cauza asa ceva.) Ei bine, combinatia asta fatala (flash > js > IE in primele secunde de incarcare) chiar E DE VINA in cazurile astea.

Solutia: foloseste un mic timer in flash, ca sa “amani” cu 1-2 secunde executia acelui javascript… works like a charm!

Click to activate and use this control.

Cine e la curent cu toate update-urile M$/IE a observat recent cum, pe o multime de siteuri, controalele de tip Flash/Quicktime/etc. au inceput sa ceara un click de pomana si sa se impodobeasca cu un border infect la roll-over. Pana sa ma documentez, am luat asta ca pe o buba a batranului meu calculator. Dar (de data asta) problema e chiar in curtea lui Bill Gates… Noroc ca exista o solutie (ca intotdeauna) la orice problema.

Continue Reading >>