| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Devil4U
Data înscrierii: 15/Iun/2005
Mesaje: 327
|
| Trimis: Mie Apr 23, 2008 4:32 pm Titlul subiectului: Script care calculeaza cate culori are o imagine |
|
|
Salut!
Lucrand la un script m'am lovit de o problema. Cum pot sa diferentiez niste poze aflate pe un website care au acelasi nume si aceasi marime? M'am gandit ca daca voi calcula cate culori sunt intr'o poza pot deosebi pozele cu 2 culori de restul. Adica sa fac o filtrare.
Ceva idei/sfaturi? |
|
| Sus |
|
vectorialpx
Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City
|
| Trimis: Mie Apr 23, 2008 5:08 pm Titlul subiectului: |
|
|
pai, vrei sa afli dimensiunea sau culorile?..
sa aflii culorile dintr-o imagine nu cred ca e util [poti sa vezi imagecolorat si alte functii din libraria GD a lui PHP] daca vrei sa aflii dimensiunea... exista alte functii pentru a afla numarul de pixeli sau numarul de biti. spor! |
|
| Sus |
|
Devil4U
Data înscrierii: 15/Iun/2005
Mesaje: 327
|
| Trimis: Mie Apr 23, 2008 5:15 pm Titlul subiectului: :) |
|
|
| pai dimensiunea o stiu, eu vreau doar sa le pot diferentia cumva.. (toate au aceasi marime si acelasi nume.. eu doar le apelez si prin get ii dau o informatie) |
|
| Sus |
|
vectorialpx
Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City
|
| Trimis: Mie Apr 23, 2008 6:39 pm Titlul subiectului: Re: :) |
|
|
Devil4U a scris: pai dimensiunea o stiu, eu vreau doar sa le pot diferentia cumva..
eu stiu ca un fisier se diferentiaza de un altul prin nume, in primul rand... apoi apare type-ul, dimensiunea si altele... tu ai fisiere de acelasi tip [imagine], de aceeasi dimensiune, cu acelasi nume... si vrei sa le diferentiezi dupa culori? 8O imi vine sa rad, pe bune... :lol: |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin
|
| Trimis: Joi Apr 24, 2008 3:23 am Titlul subiectului: |
|
|
Incearca sa deschzi fisierele cu fopen() si citesti din fiecare cu fread() pana la sfarsit sau pana cand intalnesti prima diferenta.
Eu inteleg ca fisierele cu imaginile nu stiu din ce motive au acelasi nume si extensie (obligatoriu se gasesc in foldere diferite) si aceiasi dimensiune dar difera continutul (adica e alta imagine).
Chiar asa !? Poti incerca cum ti-am zis dar ma indoiesc ca asa ceva poate exista. |
|
| Sus |
|
Devil4U
Data înscrierii: 15/Iun/2005
Mesaje: 327
|
| Trimis: Joi Apr 24, 2008 6:38 am Titlul subiectului: hmm |
|
|
deci imaginea este parsata de un script php care primeste o informatie prin GET si afiseaza o anumita poza. Eu vreau sa filtrez dupa ceva pozele ca sa stiu daca le salvez sau nu.. sa automatizez ca nu o sa stau sa dau clickuri manual ca inebunesc.
Acelasi nume, aceasi locatie.. singura chestie la care m'am gandit au fost culorile, "imagecolorstotal() — Find out the number of colors in an image's palette" am incercat dar nu mi'a mers sau nu am facut scriptul cum trebuie sau dupa dimensiune.. |
|
| Sus |
|
punctweb
Data înscrierii: 24/Mar/2004
Mesaje: 499
|
| Trimis: Joi Apr 24, 2008 8:02 am Titlul subiectului: |
|
|
| asta ajuta ? |
|
| Sus |
|
Devil4U
Data înscrierii: 15/Iun/2005
Mesaje: 327
|
| Trimis: Joi Apr 24, 2008 8:04 am Titlul subiectului: :) |
|
|
| nu are nici o legatura.. |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1155
Locație: Sibiu
|
| Trimis: Joi Apr 24, 2008 8:54 am Titlul subiectului: |
|
|
| Foloseste md5_file(). Iti returneaza hash-ul md5 calculat pe continutul fisierului. Daca un bit difera, hash-ul rezultat difera. E cea mai sigura varianta. Astfel 2 fisiere cu nume diferite dar continut identic (adica copy-rename) sunt considerate ca echivalente. Asta doreai, nu? |
|
| Sus |
|
vectorialpx
Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City
|
| Trimis: Joi Apr 24, 2008 9:43 am Titlul subiectului: |
|
|
Citat: maginea este parsata de un script php care primeste o informatie prin GET
deci, ce imagine e [nu poti sa verifici inainte de a adauga "informatia"] si ce ai prin GET. Pui un watermark sau ce?
vrei sa diferentiezi imaginile sa nu fie aceleasi, am inteles eu... imagini pe care: le iei de undeva sau le ai in baza de date sau le generezi din PHP din nimic?..
mihaitha, nu stiu daca merge treaba cu md5_file() [ma gandesc eu..] ca daca au aceeasi dimensiune si acelasi type, pot avea data diferita... vor fi diferite prin md5 dar pot reprezenta aceeasi imagine. Pe el il cam intereseaza cum arata imaginea sa faca o comparatie... cred ca vrea sa spuna ca imaginea e singura care le diferentiaza [e posibil sa ma insel] numai ca ar fi foarte aiurea sa compari cu PHP imagini vizual...
eu zic asa.. genereaza tot apoi le stergi pe cele ce nu-ti trebuiesc |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1155
Locație: Sibiu
|
| Trimis: Joi Apr 24, 2008 11:53 am Titlul subiectului: |
|
|
octavian, nu stiu daca md5_file() aplicat pe 2 fisiere identice dar cu date de acces/creare/modificare diferite returneaza hash-uri diferite. Normal n-ar trebui, intrucat md5_file() calculeaza hash-ul pe continutul fisierului, in timp ce timestamp-urile de acces/creare/modificare sunt tinute in filesystem... N-am incercat niciodata, dar o sa testez la un moment dat. Normal ar trebui sa dea acelasi hash.
devil o alta varianta de comparatie (insa nu foarte sigura) ar fi prin intermediul histogramei imaginilor. Voi elabora:
Histograma reprezinta un grafic - practic un set de perechi (culoare / valoare) care contine numarul de aparitii pentru fiecare valoare a culorii (numarul de pixeli de culoarea respectiva). Poti sa-ti faci un array de valori de culoare (in cazul cel mai defavorabil va fi foarte mare - 16.7 milioane de elemente pentru o imagine truecolor - 24 de biti - care contine cel putin un pixel din fiecare culoare), dupa care parsezi imaginea pixel cu pixel si incrementezi valoarea elementului corespunzator culorii RGB citite din pixel. Faci chestia asta pentru ambele imagini si apoi compari histogramele. Daca sunt identice, e foarte probabil ca si imaginile sa fie identice. De ce zic foarte probabil si nu sigur? Pai fii atent:
Sa ne inchipuim ca avem doua imagini de 3px pe 3px. Voi schita harta de pixeli (bitmapul) celor doua imagini, in care X, Y si Z reprezinta valori de culoare: Cod:
imaginea1 imaginea2
X X X X Y Z
Y Y Y Z X Y
Z Z Z Y Z X
[/code]Banuiesc ca e destul de vizibil ca imaginile sunt total diferite. Analizand insa histogramele, observam ca ambele imagini au histograme identice, respectiv ((X, 3), (Y, 3), (Z, 3)).
De asemenea, atat la comparatia pe baza histogramei, cat si la cea pe baza functiei md5_file(), poate aparea o alta problema: de doua ori aceeasi imagine, insa cu dimensiuni diferite, sau mai rau, cu aceleasi dimensiuni insa grad de compresie diferit (in cazul jpeg-urilor). In aceste cazuri vei avea atat histograme diferite, cat si hash-uri md5 diferite, chiar daca pentru ochiul uman este practic vorba de aceeasi imagine.
Deci pana la urma ajungem la varianta lui octavian: genereaza tot apoi le stergi pe cele ce nu-ti trebuiesc. |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin
|
| Trimis: Vin Apr 25, 2008 1:00 pm Titlul subiectului: |
|
|
Nu inteleg de ce nu-i bine cum i-am zis eu. Nu functioneaza?
Salveaza imaginea intr-un folder tmp o deschide cu fopen(), face acelasi lucru cu prima imagine din arhiva si le citeste sincron, s.a.m.d. La prima diferenta trece la imaginea urmatoare din arhiva, daca gaseste una identica atunci renunta la upload.
Poate e prea lenta !? |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1155
Locație: Sibiu
|
| Trimis: Vin Apr 25, 2008 1:44 pm Titlul subiectului: |
|
|
| dechim, nu zic ca varianta ta nu ar fi eficienta, dar e foarte laborioasa, plus (cred) foarte solicitanta pentru server. Gandeste-te daca are 1000 de imagini, cat ii ia sa faca verificarea asta in cazul unei imagini noi. md5_file() face cam acelasi lucru, dar fara chinul de a implementa citirea propriu-zisa. Plus ca si metoda ta e susceptibila la aceleasi probleme pe care le-am exemplificat. |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin
|
| Trimis: Sâm Apr 26, 2008 4:44 pm Titlul subiectului: |
|
|
| Eu ma gandeam ca toate pozele cu exceptia uneia sunt diferite de cea pe care urmeaza sa o uploadeze. Ce-i drept deschid pe rand toate cele 1000 de fisiere dar la 999 nu voi citi decat o data, 512 octeti sunt arhisuficienti pentru a vedea ca exista diferenta. MD5 calculeaza "cifra de control" citind tot fisierul, are avantajul ca fiind implemetata in cod nativ procesor server e rapida. Nu stiu ce sa zic, mi se pare interesant, am sa incerc sa fac un test cand voi avea timp ! |
|
| Sus |
|
crivion
Data înscrierii: 10/Apr/2007
Mesaje: 526
Locație: Somewhere
|
| Trimis: Lun Apr 28, 2008 7:04 am Titlul subiectului: |
|
|
| uite ceva http://docs.jquery.com/CSS/css#properties |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |