PHP Incarcarea si redimensionarea imaginilor

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/

4 comments

Skip to comment form

    • giani on March 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…

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

    I put the files on a server but do not open … I want to always comes as a download page. … php does not open 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 …

    2. That is because there is something wrong in installing the module php web server .. There's something about a mod-php enabled in apache … that if you use apache …

Leave a Reply to xenno Cancel reply

Your email address will not be published.

CAPTCHA *

This site uses Akismet to reduce spam. Learn how your comment data is processed.