PHP şi lucrul pe imagini


Desigur, cu toţii ştim că prin PHP putem face conţinutul paginilor să fie dinamic, alimentându-se de exemplu de la baze de date, prelucrând formulare… Dar PHP permite şi unele manipulări pe imagini. Cel mai adesea vedem aceasta în imaginile CAPTCHA care ne verifică dacă suntem oameni sau roboţi. În principal lucrul pe imagini e permis de librăria GD, activă pe majoritatea serviciilor de hosting. Există şi variante (librării) mai avansate, dar pentru multe operaţiuni şi GD ajunge. Librăria GD permite încărcarea de imagini şi anumite operaţiuni de desenare de bază (linie, cerc, poligon, scriere de text). PHP5 vine şi cu unele filtre pe imagini.

Dacă doar cu GD e greu de imaginat că vom putea scrie webaplicaţii prea complexe care să prelucreze imagini, librăria poate fi însă folosită cu succes pentru a „eticheta” imagini, pentru a le redimensiona, pentru a aplica acele puţine filtre existente. De dragul demonstraţiei am scris un scurt cod care, pornind de la o imagine va face două lucruri: o converteşte în nuaneţ de gri şi scrie o descriere pe imagine; respectiv o mişcorează (thumbnail). Este esenţială linia 2 care spune că „ieşirea”, adică ceea ce returnează pagina, e o imagine jpg. O încărcăm în $im după care facem cele de cuviinţă. Parcurgeţi codul şi nu uitaţi că PHP.net are instrucţiuni detaliate despre funcţiile folosite.

<?php
	header("content-type: image/jpeg");
	$scalare=$_GET['scalare'];
	if($scalare=='da'){
		$im = imagecreatefromjpeg('image.jpg');
		$orig_x = imagesx($im);
		$orig_y = imagesy($im);
		$image_x =100;
		$image_y = round(($orig_y * $image_x) / $orig_x);
		$image = imagecreatetruecolor($image_x, $image_y);
		imagecopyresampled($image, $im, 0, 0, 0, 0, $image_x, $image_y, $orig_x, $orig_y);
		imagejpeg($image);
		imagejpeg($im);
		imagedestroy($im);
	}
	else{
		$im = imagecreatefromjpeg('image.jpg');
		imagefilter($im, IMG_FILTER_GRAYSCALE);
		$text= "ACESTA ESTE UN LEU";
		$culoare = imagecolorallocate($im, 220, 210, 60);
		$centrat = (imagesx($im)-7.5*strlen($text))/2;
		imagestring($im,5,$centrat,10,$text,$culoare);
		imagejpeg($im);
		imagedestroy($im);
	}
?>

Şi cum afişăm imaginile? Dacă fişierului de sus îi spune imagini.php atunci cam aşa:

<html>
<head>
<title>Test CNet.ro imagini</title>
<body bgcolor=white>
	<img src=imagini.php?scalare=nu>
	<img src=imagini.php?scalare=da>
</body>
</html>

Dacă doriţi să vedeţi codul în acţiune daţi click aici. Desigur pe web veţi găsi multe tutoriale, mai complexe, despre PHP şi GD. Am să vă dau un singur exemplu.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (3 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *