| ||
|
Създаване на Thumbnail изображение.1. Необходим е сървър с поддръжка на PHP и с налична GD библиотека. 2. Файловете които се подържат са jpg, jpeg и png. <?php //Дефиниране на максимален размер за качената картинка define ("MAX_SIZE","100"); // Дефинирайте широчината и височината на малкото копие define ("WIDTH","150"); define ("HEIGHT","100"); //Това е функцията, която ще създаде малкото копие от каченото изображение // Оразмеряването ще бъде направено спрямо дефинираните широчината и височината, //но без деформиране на изображението function make_thumb($img_name,$filename,$new_w,$new_h) { //Получаване на разширението на снимката. $ext=getExtension($img_name); //Създава се ново изображение използваики подходяща функция от GD библиотеката if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext)) $src_img=imagecreatefromjpeg($img_name); if(!strcmp("png",$ext)) $src_img=imagecreatefrompng($img_name); //Получаване на оразмеряването $old_x=imageSX($src_img); $old_y=imageSY($src_img); // след което ще сметнем ново оразмеряване на малкото копие // в следващите стъпки ще направим: // 1. Смятаме съотношението, като заменим старото оразмеряване с ново. // 2. Ако ширината е по-голяма, тя ще се промени до максимално зададената // и височината така ще се сметне, че да не се развали оразмеряването. // 3. В противен случай ще използваме височината на изображението // като запазим оразмеряването. $ratio1=$old_x/$new_w; $ratio2=$old_y/$new_h; if($ratio1>$ratio2) { $thumb_w=$new_w; $thumb_h=$old_y/$ratio1; } else { $thumb_h=$new_h; $thumb_w=$old_x/$ratio2; } // Създаваме нова картинка с новото оразмеряване $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h); // оразмерете голямото изображение на новото и създаваме ново imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); // Извеждаме създаденото изображение към файла. Сега ще имаме малко копие на файла $filename if(!strcmp("png",$ext)) imagepng($dst_img,$filename); else imagejpeg($dst_img,$filename); //Разрушава източника на изображението. imagedestroy($dst_img); imagedestroy($src_img); } // Тази функция чете разширението на файла. // Тя е използвана да определи дали файла е картинка. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } // Тази променлива е използвана като флаг. //Стойността е инициализирана с 0 (Значи няма открити грешки) //и ще се промени на 1 ако е намерена грешка. Тогава файла няма да се качи. $errors=0; // Проверява предадената информация от формата if(isset($_POST['Submit'])) { //Прочита името на файла които потребителят качва $image=$_FILES['image']['name']; // Ако не е било празно if ($image) { // получава оригиналното име $filename = stripslashes($_FILES['image']['name']); // получаване на разширението на файла на ниско ниво $extension = getExtension($filename); $extension = strtolower($extension); // Ако е с неизвестно разширение, ще изкара съобщение за грешка //и файла няма да бъде качен. if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png")) { echo '<h1>Не известно разширение!</h1>'; $errors=1; } else { // Взимане на размера в байтове // $_FILES['image']['tmp_name'] временното име на файла докато файла се качи на сървъра $size=getimagesize($_FILES['image']['tmp_name']); $sizekb=filesize($_FILES['image']['tmp_name']); //Задаване на максимален размер в kb и изкарване на грешка ако се надвиши. if ($sizekb > MAX_SIZE*10240) { echo '<h1>Надвишен е лимитът за размер!</h1>'; $errors=1; } //за име задаваме времето в което е качен файла в UNIX времеви формат $image_name=time().'.'.$extension; //картинката ще се запише с новото име в зададената папка (images папката) $newname="images/".$image_name; $copied = copy($_FILES['image']['tmp_name'], $newname); //Ако картинката се качи но не се копира малкото копие да изкара грешка if (!$copied) { echo '<h1>Копирането не е успешно!</h1>'; $errors=1; } else { // Новият thumbnail ще се намира в папка images/thumbs/ $thumb_name='images/thumbs/thumb_'.$image_name; // call the function that will create the thumbnail. The function will get as parameters //the image name, the thumbnail name and the width and height desired for the thumbnail $thumb=make_thumb($newname,$thumb_name,WIDTH,HEIGHT); }} }} //ако няма грешки ще се изведе съобщение "Малкото копие е успешно създаден!" // и ще се създаде малкото копие if(isset($_POST['Submit']) && !$errors) { echo "<h1>Малкото копие е успешно създадено!</h1>"; echo '<img src="'.$thumb_name.'">'; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>PHP Създаване на малко копие</title> </head> <body> <form name="newad" method="post" enctype="multipart/form-data" action=""> <table> <tr><td><input type="file" name="image" ></td></tr> <tr><td><input name="Submit" type="submit" value="Качи"></td></tr> </table> </form> </body> </html>
|
|