PHP Incarcarea si redimensionarea imaginilor

Aceasta postare este disponibila si in: Engleză

Cu toţii am fost în situaţia în care trebuie sa permitem utilizatorilor să încarce imagini pentru elementele de conţinut sau imaginile de profil. Ei vor  încărca imagini ce ocupa o foarte mare lăţime de bandă, fără a lua în considerare şi spaţiu pe disc. Curând veţi avea sute de  imagini mai mari de 2 MB ce aglomereaza spaţiul pe hard disc şi necesita resurse pentru a acorda lăţime de bandă la incarcare, cu doar câteva vizualizări ale paginilor.
Deci, cum putem face noi pentru a depasi această problemă?  Ei bine, ne ajuta redimensionarea  imaginilor în mod automat cu păstrarea raportului de calitate, dar reducerea dimensiunii lor în mod semnificativ.


Aici este un script care este conceput pentru redimensionarea imaginilor cu ajutorul php:


<?php
if isset($_POST[‘Submit’]))
{
$size = 150; // the thumbnail height
$filedir = ‘pics/’; // the directory for the original image
$thumbdir = ‘pics/’; // the directory for the thumbnail image
$prefix = ‘small_’; // the prefix to be added to the original name
$maxfile = ‘2000000’;
$mode = ‘0666’;
$userfile_name = $_FILES[‘image’][‘name’];
$userfile_tmp = $_FILES[‘image’][‘tmp_name’];
$userfile_size = $_FILES[‘image’][‘size’];
$userfile_type = $_FILES[‘image’][‘type’];
if (isset($_FILES[‘image’][‘name’]))
{
$prod_img = $filedir.$userfile_name;
$prod_img_thumb = $thumbdir.$prefix.$userfile_name;
move_uploaded_file($userfile_tmp, $prod_img);
chmod ($prod_img, octdec($mode));
$sizes = getimagesize($prod_img);
$aspect_ratio = $sizes[1]/$sizes[0];
if ($sizes[1] <= $size)
{
$new_width = $sizes[0];
$new_height = $sizes[1];
}else{
$new_height = $size;
$new_width = abs($new_height/$aspect_ratio);
}
$destimg=ImageCreateTrueColor($new_width,$new_height)
or die(‘Problem In Creating image’);
$srcimg=ImageCreateFromJPEG($prod_img)
or die(‘Problem In opening Source Image’);
if(function_exists(‘imagecopyresampled’))
{
imagecopyresampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg))
or die(‘Problem In resizing’);
}else{
Imagecopyresized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg))
or die(‘Problem In resizing’);
}
ImageJPEG($destimg,$prod_img_thumb,90)
or die(‘Problem In saving’);
imagedestroy($destimg);
}
echo
<a href=”‘.$prod_img.‘”>
<img src=”‘.$prod_img_thumb.‘” width=”‘.$new_width.‘” heigt=”‘.$new_height.‘”>
</a>’;
}else{
echo
<form method=”POST” action=”‘.$_SERVER[‘PHP_SELF’].‘” enctype=”multipart/form-data”>
<input type=”file” name=”image”><p>
<input type=”Submit” name=”Submit” value=”Submit”>
</form>’;
}
?>

Dacă sunteţi un începător ca mine, veţi găsi scriptul de ajutor. Am făcut, de asemenea, o arhivă ZIP care conţine fişierele de care aveţi nevoie în lucrul cu acest script. Doar download, dezarhivati si faceti upload pe server-ul dvs. sa testati.

Descarcati de aici pictures.zip

Permanent link to this article: https://www.xenno.org/179/php-incarcarea-si-redimensionarea-imaginilor/?lang=ro

4 comments

Skip to comment form

    • giani on martie 11, 2011 at 2:48 pm
    • Reply

    am pus fisierele pe un server dar nu se deschid … imi apare mereu ca vrea sa descarce pagina .php …nu o deschide in browser…

  1. Asta se intampla pentru ca este ceva in neregula in instalarea serverului web a modulului php .. E ceva legat de activarea unui mod-php in apache … asta daca folosesti apache …

Lasă un răspuns

Your email address will not be published.

CAPTCHA *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.