Full house sličice php. Get_the_post_thumbnail() - omogućava vam da dobijete sličicu posta. Dodavanje više veličina sličica

Prikazuje html kod za sličicu trenutnog posta.

Ovu oznaku predloška treba koristiti unutar WordPress petlje.

Dodatna veličina slike, koja se zatim može dobiti pomoću ove funkcije, može se kreirati putem add_image_size() . Podrazumevano su dostupne sledeće veličine: sličica, srednja, velika, puna, posle sličica.

✈ 1 put = 0,001739 s = Tako sporo| 50000 puta = 6.79s = brzo| PHP 7.1.2, WP 4.7.3

Nema udica.

Povratak

null (ništa). Štampa string na ekranu. Funkcija prikazuje html kod slike ili praznu vrijednost (null) ako slika ne postoji.

Upotreba

$size (niz/niz)

Veličina sličice za primanje. Može biti niz: thumbnail , medium , large , full ili niz od dva elementa (širina i visina slike): array(32, 32) .

Kada je niz specificiran, nova sličica sa navedenim dimenzijama se ne kreira. A WP traži najprikladniju veličinu od onih koje već postoje, uzima je i jednostavno specificira visinu i širinu u pikselima za IMG tag kako bi slika bila manja. One. Slika je smanjena samo vizuelno.

Zadano: "post-thumbnail", veličina koja je postavljena za temu pomoću set_post_thumbnail_size()

$attr (niz/niz)

Niz atributa za dodavanje rezultujućoj html img oznaci.

Možete ga navesti kao liniju: alt=alt&class=alignleft ili kao niz:

$default_attr = array("src" => $src, "class" => "attachment-$size", "alt" => trim(strip_tags($wp_postmeta->_wp_attachment_image_alt)),);

Bilo koji atribut se može specificirati.
Zadano: ""

Primjeri

#1 Sličica kao veza do objave

Primjer 1: Upotrijebite sljedeći kod da sličicu učinite vezom do objave. Primjer za korištenje unutar WordPress petlje:

" title="!}" >

#2: Učinite sličicu vezom do objave

Da bismo to učinili, koristimo zakačicu post_thumbnail_html. U ovom slučaju, slika će biti veza do objave odmah kada se pozove funkcija the_post_thumbnail(); . Kôd se mora dodati u datoteku šablona functions.php:

Add_filter("post_thumbnail_html", "my_post_image_html", 10, 3); funkcija my_post_image_html($html, $post_id, $post_image_id) ( $html = "" . $html . ""; vrati $html; )

#3 Thumbnail - link do originalne veličine

Primjer koji pokazuje kako napraviti sličicu koja upućuje na originalnu veličinu slike:

#4 Registriranje nove veličine

Možete koristiti add_image_size() da registrujete novu veličinu i zatim je preuzmete pomoću ključa:

// recimo u functions.php registrujemo dodatnu veličinu ovako: add_image_size("spec_thumb", 360, 240, true); // dalje u petlji prikazujemo ovu veličinu ovako: the_post_thumbnail("spec_thumb");

Nastavljajući temu o WordPress sličicama, želim da se osvrnem na jedan vrlo koristan dodatak koji može znatno olakšati rad u nekim situacijama. Zamislite da blogujete nekoliko godina, recimo, počeli ste negdje 2009. godine, a sada želite modernizirati izgled (template) dodavanjem modernih opcija na stranicu, na primjer, iste. S obzirom da je podrška za sličice u WordPress-u uvedena mnogo kasnije, vaše slike se, očigledno, nalaze unutar članka direktno u tekstu.

Ispostavilo se da imate 2 opcije za rješavanje problema - koristite ga ili ručno kreirajte sličice za svaki članak. U prvom slučaju postoji osjećaj „iznuđenog“ i ne sasvim optimalnog rješenja, drugi vas može natjerati da provedete 4-5 sati petljajući po slikama. Srećom, nedavno sam pronašao treću opciju - Dodatak za automatsko objavljivanje sličica.

Ovaj modul vam omogućava da generišete sličice od prve slike u tekstu za bilo koje objave na blogu ili prilagođene vrste postova. Ako prva slika nije pronađena, dodatak će automatski nastaviti pretraživanje sve dok se ne napravi sličica. U slučaju da su sličice već postavljene za snimanje, jednostavno se ništa neće dogoditi. Ukratko, princip rada je krajnje jednostavan i logičan. Usput, ako iz nekog razloga želite zabraniti formiranje sličice za određeni post, onda kreirajte prilagođeno polje (prilagođeno polje) skip_post_thumb u odgovarajućem postu.

Instalacija dodatka je jednostavna i radi se u cjelini: klasična metoda preuzimanjem datoteka modula sa službene web stranice, raspakiravanjem i postavljanjem na FTP u /wp-content/plugins/ direktorij, nakon čega slijedi aktivacija u "Plugins" ” odjeljak sa admin panela; ili u stavci menija „Dodaj dodatak“ potražite modul pod nazivom „Automatska objava sličica“, gde ga preuzimate i aktivirate. To je sve!

Nakon instalacije, imat ćete novu stavku menija - Auto Post Thumbnail, gdje postoji samo jedno dugme za početak - Generiraj sličice. Tu je i napomena koju sam spomenuo gore - prije pokretanja, traže od vas da postavite prilagođena polja skip_post_thumb za postove u kojima ne želite ništa generirati. Ako ih nema, samo kliknite na dugme.

O napretku obrade svih blog postova bit ćete obaviješteni pomoću posebne statusne trake. Kada se obrada završi, vidjet ćete odgovarajuće obavještenje. Slično automatsko generiranje sličica se vrši prilikom promjene, ali se za te svrhe koriste Regeneracija sličica.

Možete proći kroz postove kako biste bili sigurni da ovaj dodatak radi ispravno. Također vam savjetujem da provjerite izgled bloga i koliko su postovi ispravno prikazani. Postoji mogućnost da ste za odabrani WordPress predložak po defaultu dodali prikaz sličica u kodu. Rezultat će biti otprilike ovako (kada se prikažu i slika iz posta i sličica):

Prva stvar na koju biste mogli pomisliti je da trebate ukloniti slike iz postova. Ali nemojte žuriti s tim, inače ćete opet završiti s dodatnim radom - u početku ne biste mogli pokrenuti dodatak, već ručno proći kroz sve članke bloga, mijenjajući sliku u sličicu. Da bismo ispravili ove greške, jednostavno ćemo napraviti neke promjene u šablonu.

Prvo otvorite fajlove koji su odgovorni za prikaz liste blog postova - index.php, home.php ili archive.php, catagory.php, tag.php, gde nalazimo funkciju prikaza teksta the_content(spomenuo sam to u postu o) i promijenite ga u:

Ovaj kod će prikazati kratku najavu blog posta bez isticanja ili slika, samo u tekstualnom obliku. Dalje u datoteci šablona za prikaz punog teksta bilješke (single.php), naprotiv, nalazimo funkciju sličice the_post_thumbnail i brišemo je. Obično se izlazi sa sljedećim kodom:

"alignleft post_thumbnail" ) ); ) ?>

"alignleft post_thumbnail")); ) ?>

Kao rezultat, trebalo bi da se ispostavi da će sve stranice s listama vijesti prikazati sličice + kratki tekst, a puni postovi će prikazati sav dizajn i slike koje odredite u uređivaču. Rješenje je, mislim, prilično fleksibilno, a dodatak Auto Post Thumbnail radi odlično! Inače, ako kupujete web stranice i ponekad morate očigledne GS preraditi u manje-više lijepe projekte, ovaj modul će vam svakako dobro doći - mogu reći iz ličnog iskustva. Iako, u principu, postoji još jedna opcija za rješavanje problema - ali postoji više koda i morate se bolje kretati.

Na mnogim blogovima pored opisa postova možete pronaći malu (veliku) sličicu koja bi trebala prenijeti sadržaj objave. Do nekog vremena, stvaranje takve stvari nije bilo lako. Sa pojavom Wordpress 2.9, ovo je postalo mnogo lakše.

U ovom tutorijalu pokazat ću vam kako dodati sličnu funkcionalnost svojim Wordpress predlošcima dizajna.

InkluzijaPost Thumbnail funkcije u predlošcima

Uključivanje je vrlo jednostavno. Sve što treba da uradite je da dodate jedan red u datoteku functions.php:

Add_theme_support("post-thumbnails");

Umetanje sličica u postove

Kada odete na admin panel da napišete novi post, trebali biste vidjeti novi odjeljak sa strane stranice.

Imajte na umu da novi odjel možda neće biti vidljiv i da ćete morati ići malo niže. Nakon klika Postavi sličicu pojavljuje se novi okvir za dijalog

Kliknite Koristi kao sličicu i sličica će biti dodata vašoj poruci:

Prikaz sličica

Nakon što smo napisali vijest, dodajmo je. Da bi se sličica prikazala, morate dodati liniju u petlju Wordpress. Otvorite datoteku index.php i dodajte sljedeće:

Ovo će vam omogućiti da prikažete sliku pomoću klasa attachment-post-thumbnail i wp-post-image. C koristeći ove klase možemo dizajnirati izgled sličica koristeći CSS. Na slici ispod možemo vidjeti sličicu sa ivicom i odsjecima.

Na slici iznad sličica je prilično velika. Njegova veličina se može mijenjati na admin panelu Postavke > Mediji.

Drugi način za određivanje veličine sličice je promjena datoteke functions.php. Da bismo to uradili moramo dodati još jednu liniju:

Add_theme_support("post-thumbnails"); set_post_thumbnail_size(588, 250, istina);

Sada moramo prijaviti Wordpress, tako da se koristi ova veličina. Moramo malo izmijeniti naš ciklus index.php:

Sada Wordpress tačno zna koju verziju sličice da koristi. Evo šta smo dobili:

Sada dodajmo još PHP u single.php fajl tako da kada otvorite poruku, sličica će biti na samom vrhu:

Dodavanje više veličina sličica

Ako želite da sličice budu jedne veličine na glavnoj stranici, a druge veličine na samoj stranici poruke, trebate učiniti sljedeće.

Ideja je sljedeća: želimo da stranica posta ima veliku sliku, a da glavna stranica ima malu sliku. Da bismo to učinili, moramo dodati drugu veličinu sličice u datoteku funkcija:

Add_image_size("loopThumb", 588, 125, istina);

Opis argumenata:

Loopthumb- naziv nove veličine sličice
- 588 - širina u pikselima
- 125 - visina
-
istinito - postavka koja govori Wordpress trebam li koristiti alate motora za promjenu veličine slike?

Morat ćemo promijeniti naš kod u datoteci index.php:

Također je vrijedno napomenuti da ćemo imati dva nova stila za kontrolu izgleda nove veličine sličice: a ttachment-loopThumb i wp-post-image. Možda bi bilo korisno uputiti se na klasu wp-post-image u listu stilova ili dodajte svoju klasu kada pristupate sličici:

"loopyThumbs")); ?>

Ovo će proizvesti img oznaku sa sljedećim klasama: loopyThumbs i wp-post-image.

Recimo da želimo da napravimo kvadratne sličice, onda moramo da kreiramo novu veličinu:

Add_image_size("squareThumb", 125, 125, true);

Takođe, možda biste želeli da sličica bude na levoj strani i da ima mali pad na desnoj strani:

Attachment-post-thumbnail (float: lijevo; margin-right: 10px; )

Sada mijenjamo kod u index.php za prikaz našeg kvadrata:

Evo šta dobijamo:

Ako dodate prethodno otpremljene slike kao sličice, možete završiti s kvadratima koji nisu baš ravni. To se događa jer prilikom učitavanja slika Wordpress Nisam mogao predvidjeti da ćete u budućnosti htjeti koristiti kvadratne minijature.

Ali u ovoj situaciji postoji izlaz. Dodatak će nam pomoći Regeneracija sličica. Nakon instalacije dodatka, prijavite se Alati > Regeneriraj i generiraj nove minijature ( Regenerirajte sve sličice ). Nakon ovoga ćemo imati parne kvadrate.

I zapamtite - za prikaz sličica morate imati Wordpress 2.9.

nada, Da li vam se dopala lekcija? Do sljedećeg puta!

Ne tako davno, kada sam još bio veoma zelen u svetu programiranja, te zimske večeri, radio sam na svom prvom WordPress šablonu. Trebao sam konfigurirati prikaz sličica za postove. Do tada sam se već upoznao sa brojnim WordPress šablonima koji su implementirali ovaj zadatak. I implementiran je koristeći, vjerovatno, vama poznat skript timthumb.php(kreira malu kopiju slike koristeći prenesenu vezu na ovu istu sliku). Naravno, na kraju sam priložio ovu skriptu šablonu i bio sam zadovoljan rezultatom, ali nije dugo trajalo.

Sve je funkcionisalo dobro: umetnete sliku u objavu, prekinete vezu do nje i dodate je u posebno kreirano prilagođeno polje. U predlošku se čita link iz ovog polja i pomoću njega se kreira sličica. Ali nakon nekog vremena, stalno kopiranje veze i dodavanje u prilagođeno polje postalo mi je dosadan zadatak - rutina. Osim toga, desilo se da sam potpuno zaboravio ubaciti ovaj ozloglašeni link i nakon objave sam se morao vratiti uređivanju posta. Zvuči poznato?

Na kraju sam napisao funkciju koja traži sliku u objavi, izrezuje vezu iz nje i kreira prilagođeno polje za tu objavu, sve automatski. Kasnije je ova funkcija pretrpjela neke promjene, pa neke, a rezultat je bio dodatak koji možete pogledati u nastavku.

O WordPress dodatku za sličice

Nakon aktivacije, dodatak ne radi ništa, da bi počeo da radi, moraćete da uredite šablon (pozovite funkcije na mestu gde su potrebne sličice). Ako samo instalirate i aktivirate dodatak, on neće učiniti ništa!

Generalno, skripta je veoma slična timthumb.php, ali je drugačija i bolja na neki način:

  1. Nema potrebe da ručno kreirate prilagođeno polje sa vezom do slike. Polje se kreira automatski.
  2. Radi malo brže od timthumb.php (timthumb.php je univerzalna skripta i stoga ima puno nepotrebnih operacija provjere);
  3. Veza do slike će izgledati ispravno /images/filename.jpg , a ne /functions.php?src=/images/filename.jpg&w=100&h=100&q=80;
  4. Keš memorija se briše po potrebi. U timthumb.php, keš se stalno provjerava i stari fajlovi se brišu. Sredstva se troše na verifikaciju (mala stvar, ali ipak). Na ovome možete bezbolno uštedjeti novac;
  5. Promjena veličine se može koristiti direktno u postu navođenjem klase mini i potrebnih dimenzija na slici;
  6. Mnogo je praktičnije koristiti kada je integrisan u WordPress temu: ne morate da dobijete vrednost prilagođenog polja, proverite da li polje postoji da biste prikazali sliku čuvara mesta. Sve će to biti urađeno automatski.
  7. Postoji mnogo hakerskih napada na timthumb.php, koji će, ako ne dozvoli hakovanje sajta, privući nepotrebnu pažnju hakera i opteretiti server.

Kako Kama Thumbnail funkcionira

Kreira keš folder: wp-content/cache/thumb. U njemu će se stvarati minijature.

Prilikom objavljivanja ili ažuriranja objave, dodatak traži vezu do originalne slike i upisuje je u prilagođeno polje objave, a zatim se kreira sličica u temi pomoću ove veze. Veza se određuje sljedećim redoslijedom:

  1. Ako objava ima WordPress sličicu, njen link će biti preuzet;
  2. Ako u tekstu objave postoji slika, bit će preuzet njen link. Ako je ova slika sidro veze na veću verziju ove slike, tada će se uzeti URL linka;
  3. Ako objava nema WP sličicu ili sliku u tekstu, tada će dodatak provjeriti da li objava ima učitanu sliku (prilog). Ako postoji prilog, onda će link biti preuzet odatle;
  4. Ako ništa nije pronađeno, u prilagođeno polje će se dodati stubić: “no_photo”. Ovo je neophodno kako se ne bi izvodile ove operacije za traženje veze svaki put.

Kada se deinstalira, dodatak briše sve: prilagođena polja, opcije u bazi podataka, keš slike, keš folder.

Preuzmite dodatak

Instalacija

  1. Raspakirajte arhivu u direktorij dodataka /wp-content/plugins i aktivirajte dodatak na admin panelu. Ili instalirajte dodatak sa WordPress admin panela: Dodaci > Dodaj novo > Prenesi > Odaberi > Instaliraj.
  2. Konfigurirajte dodatak na stranici administrativnog panela: Postavke > Mediji. Preporučujem da u osnovnim postavkama WP-a postavite nule za veliku veličinu "Velika veličina" i smanjite veličinu za srednju veličinu "Srednja veličina" (na primjer: 150 x 100). Ovo je neophodno kako prilikom učitavanja slike, WP ne bi stvorio nepotrebne veličine slike. Ovaj dodatak će zamijeniti ovu funkciju.

Blok postavki dodatka na stranici "medijske datoteke":

Upotreba

Nakon instaliranja dodatka u šablonu, možete koristiti sljedeće funkcije:

  • kama_thumb_src($args) – vraća link na kreiranu sličicu
  • kama_thumb_img($args) – vraća gotovu sliku (img tag)
  • kama_thumb_a_img($args) – vraća link slike. Link vodi do originalne slike.

$args:

  • w ili širina– širina sličice (obavezno)
  • h ili visina– visina sličice (obavezno)
  • q– kvalitet kompresije jpg (podrazumevano 85. max. 100)
  • src– link do originalne slike koju treba smanjiti. U ovom slučaju, slika se neće raščlaniti iz sadržaja.
  • alt– alt atribut slike
  • naslov- atribut naslova slike
  • klasa– atribut klase slike. Navedite klasu mini i potrebne dimenzije za kreiranje sličice za sliku u članku.
  • no_stub– označite ako ne trebate prikazati stub. Umjesto toga će biti vraćen prazan rezultat.
  • post_id– identifikator posta. Mora se proslijediti kada je funkcija pozvana izvan WordPress petlje (na primjer, unutar funkcije) ili kada je varijabla $post pogrešno definirana (na primjer, definira se slika iz drugog posta ili neki drugi problemi). Ako prosledite ovaj parametar, skripta će tačno znati koju objavu treba obraditi. Ako ovaj parametar nije proslijeđen, tada će se obrađivati ​​objava koja se trenutno nalazi (kada je funkcija pozvana) u varijablu $post.

napomene:

  1. Parametri se mogu specificirati:

    // linija kama_thumb_img("w=200 &h=100 &alt=ime slike &class=aligncenter"); // ili niz kama_thumb_img(array("width" => 200, "height" => 150, "class" => "alignleft"));

  2. Možete odrediti samo širinu ili visinu, tada će suprotna strana (visina ili širina) biti odabrana proporcionalno smanjenoj kopiji;
  3. Parametar src je potreban za slučajeve kada trebate kreirati sličicu bez korištenja prilagođenih polja (snimite bilo koju sliku i napravite sličicu za nju).
  4. Ako trebate provjeriti ima li objava sliku, a ako ne, onda uradite nešto drugo, onda koristite ovaj kod:

    $img = kama_thumb_img("w=150&h=150&no_stub"); if(! $img) echo "Nema slike";

    $ img = kama_thumb_img ("w=150&h=150&no_stub") ;

    ako (!$img)

    echo "Nema slike" ;

Sličica u tekstu članka (kratki kod)

Ako članak treba da smanji sliku i da je poveže sa originalom, onda dajte slici klasu mini i podesite potrebne dimenzije (širina ili visina).

Na primjer, ubacili smo sliku u članak:

Ali ne trebamo tako veliku sliku u članku i želimo je smanjiti ne vizualno, već zapravo, zatim joj dodamo mini klasu i naznačimo potrebne dimenzije:

300 ” />

Visina koju smo uklonili biće odabrana automatski, proporcionalno.

Ovaj pristup - ne korištenje kratkog koda - mi se činio zgodnijim: možemo kreirati sličice za slike i istovremeno vidjeti kako slika izgleda prilikom uređivanja objave, pa čak i ako se dodatak eventualno ukloni, slike u objavama će i dalje će biti prikazan (neće ostati nejasan kratki kod).

Da bi se kreirala sličica, ova opcija mora biti omogućena u postavkama.

Primjeri korištenja

#1 Dobivanje minijature

Unutar WordPress petlje, gdje nam je potrebna sličica za objavu dimenzija 150x100, koristimo sljedeći kod:

< ? php echo kama_thumb_img ( "w=150 &h=100 &class=alignleft myimg") ; ? >

Kao rezultat, umjesto ovog koda pojavit će se gotova oznaka :

#2 Ne prikazuj sliku čuvara mjesta

Da biste spriječili prikaz stubića ako unos nema slika, morate definirati parametar no_stub:

Vraća sličicu URL-a: /wp-content/cache/thumb/ec799941f_100x80.png . Ovaj URL se može koristiti, na primjer, ovako:

"alt="" />

< img src = "" alt = "" / & gt ;

Ako trebate napraviti minijaturu poput slike, klikom na koju će se otvoriti veća slika, upotrijebite sljedeći kod:

< ? php echo kama_thumb_a_img ( "w=150 &h=100 &class=alignleft myimg &q=75") ; ? >

Tokom razvoja i održavanja web stranica često se javlja potreba za kreiranjem sličica – manjih kopija slika. U tekstu stranice, umjesto velike slike, možete postaviti takvu kopiju, koja je veza do izvorne datoteke. Rad foto albuma, galerija slika i menadžera datoteka u CMS-u nezamisliv je bez automatskog kreiranja sličica. Analiziraćemo skriptu koja generiše takve sličice i na njenom primeru ćemo se upoznati sa nekim od mogućnosti PHP-a za rad sa slikama.

PHP obrađuje slike koristeći GD biblioteku. Skoro svi hosting sajtovi imaju instaliranu ovu biblioteku. Ako iznenada ne budete imali sreće, kontaktirajte tehničku podršku vašeg hostinga. U našoj skripti ćemo koristiti funkcije koje su se pojavile u GD biblioteci verzije 2.0.1.

Prvo, definirajmo zahtjeve koje će minijaturni generator ispuniti. Trebalo bi stvoriti sličice kopija slika sačuvanih u GIF, JPEG i PNG formatima. Ako je originalna slika imala prozirnost, onda bi sličica trebala ostati prozirna. Također ne treba zanemariti sigurnost i brzinu.

Odlučili smo šta želimo. Sada možete početi sa programiranjem. Prenijet ćemo izvorni fajl i dimenzije konačne slike putem URL-a:

$width = isset($_GET["width"]) ? (int) $_GET["width"] : 0; $height = isset($_GET["height"]) ? (int) $_GET["visina"] : 0; $max_size = isset($_GET["max_size"]) ? (int) $_GET["max_size"] : 0; $file_name = $_GET["file"];

Postoje dva načina da odredite veličinu sličice. Možete postaviti parametar max_size, tada će dimenzije izlazne slike biti proporcionalne originalnim, ali će se promijeniti tako da može stati u kvadrat veličine max_size*max_size. Također možete postaviti veličinu izlazne slike direktno u parametrima širine i visine (ako jedan od njih nedostaje, slika će biti proporcionalno komprimirana).

Složimo se da će skripta generirati sličice za datoteke koje se nalaze u korijenskom direktoriju web servera ili u poddirektorijumima. Kako bismo spriječili neovlašteni pristup drugim datotekama, složit ćemo se da parametar datoteke u URL-u specificira putanju do datoteke iz korijenskog direktorija i počinje znakom "/".

$file_name = str_replace("..", "", $file_name); $file_name = $_SERVER["DOCUMENT_ROOT"] . $file_name; if (!is_file($file_name)) ( echo "Greška: datoteka nije pronađena"; exit(); )

Razmotrimo funkciju koja će izvršiti glavni zadatak skripte.

Funkcija make_thumbnail($file_name, $thumb_width, $thumb_height, $max_size) (

Prvo, hajde da dobijemo informacije o izvornoj slici:

$image_info = getimagesize($file_name);

Funkcija getimagesize vraća niz $image_info koji sadrži vrijednosti nekih karakteristika slike:

  • $image_info i $image_info su širina i visina slike,
  • $image_info - konstanta oblika IMAGETYPE_XXX koja definira format datoteke (na primjer, IMAGETYPE_GIF ili IMAGETYPE_JPEG),
  • $image_info - niz "height="yyy" width="xxx"" namijenjen za umetanje u tag
  • $image_info["mime"] - MIME tip koji odgovara datoteci.

U zavisnosti od tipa mime-a, pozvaćemo našu funkciju za otvaranje i učitavanje slike: imagecreatefromGIF, imagecreatefromJPEG ili imagecreatefromPNG.

Switch ($image_info["mime"]) ( case "image/gif": if (imagetypes() & IMG_GIF) ( $image = imagecreatefromGIF($file_name); ) else ( $err_str = "GD ne podržava GIF"; ) break; case "image/jpeg": if (imagetypes() & IMG_JPG) ( $image = imagecreatefromJPEG($file_name); ) else ( $err_str = "GD ne podržava JPEG"; ) break; case "image/png ": if (imagetypes() & IMG_PNG) ( $image = imagecreatefromPNG($file_name); ) else ( $err_str = "GD ne podržava PNG"; ) prekid; default: $err_str = "GD ne podržava " . image_info["mime "]; ) if (isset($err_str)) ( vrati $err_str; )

Sada morate odrediti dimenzije sličice, ako nisu eksplicitno postavljene.

$image_width = slikex($image); $image_height = imagey($image); //ograničenje visine i širine je postavljeno: if ($max_size) ( if ($image_width

Funkcija imagecreatetruecolor kreira sliku u punoj boji veličine navedene u parametrima i vraća njen identifikator. imagealphablending vam omogućava da odaberete jedan od dva načina rada sa alfa kanalom. Ako je drugi parametar ove funkcije postavljen na true, onda kada crtate prozirnom bojom, nova slika će se djelomično preklapati sa starom. Ako je postavljeno na false, tada se pikseli originalne slike u potpunosti zamjenjuju pikselima nove. Jasno je da nam treba drugi režim. Funkcija imagesavealpha je potrebna tako da kada se pozove funkcija imagePNG, alfa kanal se pohranjuje u rezultirajuću sliku.

$thumb = imagecreatetruecolor($thumb_width, $thumb_height); imagealphablending($thumb, false); imagesavealpha($thumb, istina);

Sada je vrijeme da pozovete funkciju koja će izvršiti glavni zadatak ove skripte. imagecopyresampled kopira pravougaono područje s prve slike na drugu. Uzima kao ulaz ID-ove slike, koordinate gornjeg lijevog ugla regije na drugoj slici, koordinate gornjeg lijevog ugla regije na prvoj slici, širinu i visinu regije na drugoj sliku, te širinu i visinu regije u prvom. Ako su veličine područja različite, kopirana slika se rasteže ili komprimuje. U ovom slučaju se primjenjuje anti-aliasing kako bi kvalitet slike ostao zadovoljavajući.

Treba napomenuti da postoji još jedna funkcija, imagecopyresized, koja je slična imagecopyresampled. Kvalitet slike kreirane kopiranjem slike teško je smatrati zadovoljavajućim, jer ova funkcija ne vrši anti-aliasing, ali je brža. Stoga je u nekim situacijama sasvim prihvatljivo koristiti ga.

Imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);

ImagePNG($thumb); //oslobađanje memorije imagedestroy($image); imagedestroy($thumb); )

U ovom trenutku, rad na scenariju bi mogao biti završen. Zaista, prikupljanjem gornjeg koda u jednu datoteku (tekst funkcije mora biti postavljen na samom početku) i stavljanjem operatora na kraj

//srednja opcija! header("Tip sadržaja: slika/png"); make_thumbnail($file_name, $width, $height, $max_size);

dobićemo radnu skriptu.

Treba napomenuti da funkcija zaglavlja postavlja zaglavlja odgovora servera iu ovom slučaju označava tip (PNG sliku) vraćenih podataka. Zaglavlje Content-Type, kao i bilo koja zaglavlja, mora biti postavljeno prije izlaznih operacija. Međutim, kada radite sa grafikom, ovo zaglavlje morate postaviti što je niže moguće, jer poruke o grešci koje se pojavljuju nakon podešavanja Content-Type: image/png neće biti prikazane u pretraživaču.

Pogledajmo pisani kod. Svaki put kada pristupite stranici sa sličicama, server ih kreira iznova, što će, ako sajt ima veliki promet, dovesti do značajnog opterećenja servera. Uobičajeno rješenje u ovoj situaciji je keširanje - spremanje rezultata skripte u datoteke.

Keširanje dinamičkih informacija ima smisla ako se ažuriraju znatno rjeđe nego što se pristupa stranici na kojoj su prikazane. Postoje situacije kada ne morate keširati sliku generiranu u hodu. Na primjer, brojač posjeta, koji bi očigledno trebao pokazati različite vrijednosti za svako učitavanje stranice. Međutim, u većini slučajeva, slike za koje se kreiraju sličice se mijenjaju relativno rijetko, u takvim slučajevima keširanje je opravdano.

Pogledajmo kako možete keširati sličice. Spremit ćemo ih u datoteke s nazivima koji su md5 hešovi imena datoteka sa izvornim slikama, na primjer, u folder img_cache u korijenskom direktoriju web servera.

Define("IMG_CACHE", $_SERVER["DOCUMENT_ROOT"]."/img_cache/"); //za ispravan rad filemtime clearstatcache(); //ime keš datoteke $cache_file_name = md5($file_name);

Odredimo vrijeme izmjene keš datoteke, ako postoji.

$cache_mtime = 0; if (is_file(IMG_CACHE . $cache_file_name)) ( $cache_mtime = filemtime(IMG_CACHE . $cache_file_name); )

Uporedimo vrijeme potrebno za promjenu originalne datoteke slike i vrijeme potrebno za promjenu datoteke u kešu. Ako se slika promijenila otkako je sličica ušla u keš memoriju, kreira se nova sličica i keš se ažurira. Ako se slika nije promijenila, jednostavno koristimo kopiju sličice iz keša. Na ovaj način će keš biti ažuriran.

Naša make_thumbnail funkcija odmah šalje sličicu pretraživaču. Međutim, prvo morate sačuvati sličicu u keš memoriju. Stoga ne bismo trebali direktno pozivati ​​funkciju make_thumbnail, kao što smo to učinili gore. Morate presresti izlaz koristeći baferovanje. Nakon izvršenja dijela koda između ob_start i ob_end_clean, varijabla $thumbnail će sadržavati podatke koje je funkcija imagePNG trebala poslati pretraživaču, a varijabla $thumb_size će sadržavati veličinu podataka.

Ako ($cache_mtime

Vrijedi napomenuti da će smanjene kopije izbrisanih slika ostati u direktoriju img_cache. Stoga, kada pravite velike promjene u strukturi web mjesta, keš se mora ručno obrisati.

Ostaje samo da postavite zaglavlja i pošaljete sličicu u pretraživač.

Header("Tip sadržaja: slika/png"); //zaglavlje vremena kreiranja sličice("Posljednja izmjena: ".gmdate("D, d M Y H:i:s", $cache_mtime)." GMT"); header("Dužina sadržaja: ".$thumb_size); //izlaz sličice u pretraživač echo $thumbnail;

Sada trebate sakupiti dijelove koda u jednu datoteku, na primjer, preview.php (stavljajući funkciju make_thumbnail na početak) i smjestiti je u korijenski direktorij web servera. Tamo trebate kreirati direktorij img_cache i postaviti njegova prava pristupa na 777. Sve je spremno!

Neka slika pict.jpg bude u direktorijumu slika, odnosno može se ubaciti na stranicu pomoću koda . Tada će izgledati kod koji postavlja sličicu .

Naravno, u ovoj skripti se mogu implementirati i druge karakteristike. Članak je postavio temelje, a ostalo ovisi o vašoj mašti.