tutorial scris de mihai.mitroi 07 februarie 2012 / 689 afisari
In acest tutorial te voi invata cum sa scrii un text peste o poza folosind doar un script PHP. Probabil ca de multe ori ai vrut sa pui poze pe un site, dar sa nu le poata folosi nimeni, avand fie un text, fie un logo pe ele.
Poti face acest lucru cu un program de editare grafica, cum este Photoshop, dar daca ai sute sau chiar mii de poze? Le vei lua pe rand? Nu cred ca ar fi placut lucrul acesta.
Un simplu script PHP poate usura enorm aceasta munca si te poate scuti de ore de trudit manual la fiecare poza.
Hai sa vedem cum poti realiza acest lucru. Mai intai pune toate pozele pe care vrei sa le scrii intr-un folder pe serverul tau. Apoi, creeaza inca un folder gol si ai grija sa aiba permisiunile de scriere puse. Altfel, scriptul PHP va da o eroare si nu vei putea scrie pe pozele tale.
Ultimul lucru este sa rulezi scriptul PHP, pe care ti-l voi detalia mai jos si gata. Toate pozele tale se vor regasi in noul folder, dar modificate, cu textul ales de tine scris pe ele.
Iata scriptul PHP care face aceasta treaba extrem de folositoare:
<?php
// seteaza tipul de continut
header('Content-Type: image/jpeg');
$path = "../imagini/";
$dir = @opendir($path) or die("Nu am reusit sa deschis folderul $path");
$files = array();
while ($files[] = readdir($dir));
sort($files, SORT_NUMERIC);
closedir($dir);
// salveaza imaginea in noul folder
imagejpeg($im, "../imagini_noi/$file");
echo $file."<br>";
}
?>
Dupa cum vezi, scriptul este foarte simplu. Intai am specificat tipul de fisier pe care il va salva scriptul, in cazul nstru jpeg, dar poti pune si gif sau png, daca vrei.
header('Content-Type: image/jpeg');
Apoi am specificat folderul in care se afla pozele noastre.
$path = "../imagini/";
Cu o bucla incepem sa luam fiecare poza fin folderul nostru si s-o modificam. Totul se intampla in aceasta bucla. Verificam ca fisierul pe care il modificam sa fie o imagine:
Creeam imaginea noua cu functia imagecreatefromjpeg din biblioteca de functii GD a PHP. Ai grija ca aceasta biblioteca sa fie instalata pe serverul tau, altfel vei primi o eroare si scriptul se va incheia prematur.
$im = imagecreatefromjpeg("../images/joc/$file");
Urmeaza sa creeam cateva culori pe care le vom folosi la scrierea textului cu functia imagecolorallocate care are nevoie de culoarea in format RGB.
Apoi scriem textul cu functia imagettftext care are nevoie de tipul de font folosit, dimensiunea, coordonatele pe cele doua axe ale textului si de o culoare.
Foarte bun tutorialul, insa am o mica intrebare: la unul dintre site-urile mele, la articolele/postarile mai vechi aveam o dimensiune la poze (data din Photoshop de 100x100 px), iar acum la noile postari, pozele au dimensiunea de 220x110 px si am facut din programare sa ia automat pozele cele vechi si sa le faca resize la 220x110 px (stiu ca se vad pixelate) si inca nu am apucat sa le refac la noua dimensiune (manual in Photoshop)... acum daca aplic ce ati scris in tutorial, cum se va vedea text-ul pe pozele cele vechi (cele care au automat resize si sunt cam pixelate) ? Multumesc frumos si astept un raspuns. Cu stima
2RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
@mihai.mitroi: Salut, multumesc frumos pentru raspuns, o sa incerc sa aplic pas cu pas tot ce se afla in tutorial si o sa revin pentru a va povesti daca a mers si daca am intampinat probleme. Multumesc
0Raspunde Ai votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
Salut, se poate si un demo, ceva ? De exemplu, daca eu am pozele de dimensiunea 220x110 si vreau textul pe marginea de jos, cum ar trebui sa introduc coordonatele ? Multumesc frumos
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
@Rammstein: Daca vrei sa ai textul pe marginea de jos a pozei, scazi din inaltimea pozei dimensiunea fontului cu care vei scrie textul si spatiul care vrei sa iti ramana intre text si marginea de jos. In felul asta vei afla unde va trebui plasat textul pe coordonata Y. Similar, poti face si pentru coordonata X, adica marginile stanga - dreapta.
0Raspunde Ai votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
De cate ori trebuie rulat acest script? Sa spunem ca eu pun poze noi in folderul initial de 4 ori pe zi, eu de cate ori trebuie sa rulez scriptul ? Ce se intampla cu pozele pe care a fost deja adaugat watermark-ul ? Sunt rescrise sau ignorate?
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
@Rammstein: Scriptul poate fi rulat oricand, dar daca vrei sa apara imediat poza buna, va trebui sa faci lucrul acesta imediat ce-ai pus o poza noua. Poti utiliza pentru acest lucru si un cron care sa ruleze singur la un anumit interval, in functie de cat de des pui pozele.
0Raspunde Ai votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
Inca o intrebare: ce fac daca in acel folder am toate tipurile de imagini? Adica, trebuie sa am cate un script ca acesta pentru jpeg, unul pentru png si altul pentru gif-uri ?
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
@Rammstein: Da. Pentru ca la inceputul scriptului tu trebuie sa ii spui acestuia tipul de extensie. Plus ca functiile difera putin pentru fiecare tip de fisier.
0Raspunde Ai votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
Salut din nou Mihai, am vazut in script ca fontul este trecut astfel: $font = 'GILSANUB.TTF'; intrebarea mea este: trebuie sa avem undeva anume pe server acest font? Si 2, nu inteleg $file == "index.php" care mai apoi apare in cod iar cu $file... Mie unul nu imi iese treaba ... si nu stiu unde gresesc...
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
@Rammstein: Da, daca este un font neconventional, trebuie sa fie pe server in format TTF. Variabila $font contine calea spre acel font. $file == "index.php" iti spune ca daca exista un fisier de genul asta, sa fie ignorat. Conteaza mai putin asta. Poti sa ignori linia aceasta si s-o lasi asa cum este.
0Raspunde Ai votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)
Salut din nou, nu s-ar putea adapta acest script ca el sa ruleze instant, la fiecare upload de poza noua ? Ma refer la faptul ca, atunci cand urci o noua poza, el sa ii puna watermark automat.
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)