![]() |
Smanjenje slike u letu (valjda se tako kaze)
Imam jednu skriptu koja pozivom slike preko neke strane sajta umanjuje sliku na zeljene dimenzije, u letu.
Znaci slika se postavi u originalu na serveru i onda je preko ove skripte umanjuje na stranama sajta na zeljenu velicinu. Problem je sto ista scripta, kod istog hosting provajdera, iste slike, na jednom mestu radi u potpunosti, a na drugom polovicno. I na jednom i na drugom mestu imam slike koje su jako velike od 2 do 8 Mb. Na jednom mestu, ista skripta, umanjuje sve slike bez obzira na velicinu, dok na drugom mestu umanjuje samo manje slike dok ove velike nece. Ono sto pitam vas je, da li se mogu na ovaj nacin (u letu) umanjivati ovako velike slike 8 Mb i da li je to ok? I ako postoji neko objasnjenje, zasto na jednom domenu radi a na drugom ne, a karakteristike kupljenog hostinga su potpuno iste? |
Pretpostavljam da je u pitanju "memory limit".
Proveri sa phpinfo koliki je limit na jednom serveru a koliki na drugom. Korekciju ako je dozvoljeno i ako je to u pitanju probas da uradis sa: PHP kôd:
|
Nisi napisao kou tehnologiju koristiš. Da li GD library ili neki tool tipa imagamagick. Ako imaš velike fotke, ne preporučujem GD.
|
.... Facebook sve fotke cuva u 4 razlicite velicine... Tako da imaš na umu činjenicu da to može stvoriti određeni overhead ako bude previše posla za skriptu...
|
^ ti si danas šizno ko ja ono pre neki dan? :) Nisi pogodio ni jednu temu :D Kakve veze ima facebook i 4 slike sa ovim?
|
Deluje na GD. Povecace memory limita ce da radi dokle imas ram na serveru. GD svaki piksel cuva u 4 bajta pa ti vidi koliko ti treba za slike 2000x2000 ;)
Tranjnije i bolje resenje je da predjes na imagemagick |
Citat:
|
Prvo hvala svima na odgovorima!
@bokica, moguce je da je problem u tome sto si ti naveo. Proverio sam phpinfo u oba slucaja i rezultat je da u prvom slucaju gde ne radi ova scripta memory_limit je 64M, a u slucaju gde radi 200M. E sad nisam sigurann 100% da je do toga, posto si ti naveo da probam pomocu "ini_set("memory_limit","32M"); " gde si naveo da probam sa 32M, a ono je vec setovano na 64M. Probao sam da podignem na 100, pomocu ove funkcije ali nije htelo. Da li je trenutnih 64M dovoljno za slike do 10Mb? @blusheman, ne znam ti ja razliku izmedju imagamagick, GD tako da ne znam o cemu se radi u mom slucaju. Ukoliko je velika posecenost sajta npr. da li bi ova scripta izazvala probleme, odnosno izazvala opterecenje memorije, pri cemu bi se znatno usporilo ucitavanje sajta? Vidim da je neko predlozio da je bolje cuvati slike u dve velicine, koliko se vas slaze sa tim, posto je nekad potrebna manja slika velicine npr. 120x100px, a nekad veca ili manja? evo dela scripte za JPG slike: PHP kôd:
|
Ovo sto ti radis je skoro pa krivicno delo :D
Šalim se... nisam te ja odmah razumeo da za svaki prikaz ti radiš resize. Nemoj to nikako da radiš, kada već imaš tu funkciju, stavi da se posle uploada radi to i čuva u file... bolje da čuvaš i 10 veličina slika pa da prikazuješ kako ti šta treba, nego da ovo radiš. |
Upravo je to pisac htio reći.... :)
|
Izvinjavam se ali ja ga stvarno nisam tako shvatio, možda zato što nisam očekivao da neko to radi. Izvinjavam se sa šlagom i jagodom. My bad :)
|
I ja kasnije ukapirah sta znaci "u letu". :)
|
Ok, shvatio sam da je bolje cuvati, vise slika nego raditi ovo in "fly".
Cudi me da se niste sreli stim izrazom kod ovih scripti ili sam ja nesto umislio? Preuzeo strucnjak (ja) ovu scriptu od jednog drugog strucnjaka koji ju je koristio za sajtove, kad ono nije bilo Ok ovo raditi. Kazu da je cak kaznjivo :). Ipak hvala svima! |
U mom "komšiluku" izraz "resize on the fly" znači da radiš resize odmah posle upload i čuvaš takvu smanjenu sliku na hdd, a ne da radiš resize svaki put kada prikažeš sliku. Manje je zlo čak i da radiš resize u HTML-u preko width i height atributa za img tag.
A tog stručnjaka pozdravi i kaži mu da proba da uradi to na nekom live sajtu koji je vidljiviji od localhost i ima bar 100 poseta dnevno, pa neka nam onda ispiča tužnu priču kako mu je hosting provajder dao crveni karton :) "Ipak, hvala svima" mi zvuči kao da si nezadovoljan savetima... ono kao ... hvala na trudu, ali mnogo s...te? |
Zahvalnost je zaista bila od srca, mislim iskrena. E sad ova rec "Ipak", moram da priznam da je ugrozila smisao iskrenosti, al evo povlacim tu rec. Saveti su zaista bili korisni.
Sto se tice ovog programera, prenecu mu pozdrave. Normalno svako uci dok je ziv, pa ce tako i on. Nazvao sam ga "profesionalac" jer poznaje mnogo vise PHP od mene, ali je i on daleko od nekog savrsenstva. JOs jednom hvala! Pozdrav! |
ok, NHF, samo sam hteo da proverim pošto smo imali slučajeva da se ljudi polome da pomognu nekome a onda ih dotični nazove raznim imenima.
|
Je l ima neko neki link za dobru skriptu za smanjivanje slika u letu?
|
Definiši "u letu" (necete me ponovo navuci) :)
|
Pa da pri prvom prikazu fotke, uradi smanjivanje i da je cuva.
Naime, imam slike u vestima koje su 250px uglavnom, ali ne sve, a hteo bih na naslovnoj stranici sajta, da budu 100px sirine. Znaci jednom uradi resize i onda je cuva Prvo pita da li file exist, pa ako ga nema, kreira thumb. |
Takvo resenje bi ti verovatno poprilicno usporilo sajt, u zavisnosti od posecenosti, jer svaka takva provera uzima "vremena".
Bolje je da programom jednom protrcis i smanjis sve slike u tu drugu velicinu. Posle samo prikazujes. |
Ne znam zasto koristite file_exsits funkciju? ona jeste dosta brza, ali ako imas listing na strani gde ima recimo 50 slika, on pre svakog prikaza proverava da li postoji taj file.
Pogledajte onerror event u javascript, zasto jednostavno ne koristite nesto ovako: <img src="nepostojecaslika.jpg" onerror="this.src='/url/do/genericke/slike.jpg' " /> Tako ce kad god nema slike da prikaze neku genericku sliku tipa "not found" ili nesto slicno. Jedino sto tako generise i 404 u apache error.log, ali to je vec druga prica. Takodje, iako nije preporucljivo ni to, daleko je bolje raditi "nasilno" smanjivanje slika preko html atributa width="50" height="50" nego raditi svaki put thumbnail (ako vec nemas generisan thumbnail) |
Deo koda
Jeste da pripada grupi Code snippets, ali pošto nije univerzalna, već za jedan konkretan slučaj, možda pomogne ...
PHP kôd:
|
Vreme je GMT +2. Trenutno vreme je 10:04. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.