Thumbnail картинка с php

Автор: lud2

В този урок вие ще научите как може да създадете thumbnails картинка от качени картинки като използваме DG php image библютека.Картинките няма да бъдат деформирани.Преди да се качи картинката тя ще бъде обработвана.

Изисквания:
Трябва да имате инсталирани PHP и GD Graphics libary.За да видите дали ги имате инсталирани на вашия сървар, създайте файл с име info.php и поставете по-долния код:

<?php
phpinfo();
?>

Забележка1: Трябва да зададете enctype от атрибута „multipart/form-data“,заради формата да не ви показва грешки,иначе няма да се ъплоудват вашите картинки!

Създайте папка images и създайте още една папка thumbs в папката images.Създайте и още една папка img в нея поставете .Направете правата на папките за писане за всички или скрипта няма да работи.

След това вижте по-долния код и четете внимателно коментарите

<?php
$server=getenv("HTTP_REFERER");

//Дефиниране на максимален размер за качената картинка
define ("MAX_SIZE","10000");
// Дефинирайте широчината и височината на малкото копие
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);

if(!strcmp("gif",$ext))
$src_img=imagecreatefromgif($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") && ($extension != "gif"))
{
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 '<div align="center">';
echo "<h1>Малкото копие е успешно създадено!</h1>";
echo '<img border=0 src="'.$thumb_name.'">';
echo '<br>';
echo '<br>';
echo '<table>';
echo '<tr><td>phpBB/IPB Thumbnail</td><td><input class=input type="text" value="[url='.$server.''.$newname.'][img]'.$server.''.$thumb_name.'[/img][/url]" name="'.$thumb_name.'" size="100"></td></tr>';
echo '<tr><td>phpBB/IPB Оригинален размер</td><td><input class=input type="text" value="[img]'.$server.''.$newname.'[/img]" name="'.$newname.'" size="100"></td></tr>';
echo '<tr><td>HTML Thumbnail</td><td><input class=input type="text" value="<a href='.$server.''.$newname.'><img src='.$server.''.$thumb_name.' border=0></a>" name="'.$newname.'" size="100"></td></tr>';
echo '<tr><td>HTML Оригинален размер</td><td><input class=input type="text" value="<img src='.$server.''.$newname.' border=0>" name="'.$newname.'" size="100"></td></tr>';
echo '<tr><td>Директен линк към оригинала</td><td><input class=input type="text" value="'.$server.''.$newname.'" name="'.$newname.'" size="100"></td></tr>';
echo '</table>';
echo '</div>';
}

?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>PHP Създаване на малко копие</title>
<style type="text/css">

body
{
background: #F9F9F7 url('img/a1.gif') repeat-x;
font-size: 11px;
font-family: "trebuchet ms", helvetica, sans-serif;
color: #8C8C73;
line-height: 18px;

}

input {
color: #000;
text-decoration: none;
background: #F4F3F3;
border: 1px solid #ADAEAF;
font: normal 9pt verdana, arial;
}
input:hover {
background: #F4F3F3;
border: 1px solid #000;
}
</style>
</head>

<body>
<div align="center">
<br>
Разрешени разширения: jpg, jpeg, png
<br>
<form class=input name="newad" method="post" enctype="multipart/form-data" action="">
<table>
<tr><td><input class=input type="file" name="image" ></td><td><input class=input name="Submit" type="submit" value="Качи"></td></tr>
</table>
</form>
</div>
</body>
</html>

Това е

Източник
https://web-tourist.net/forum/

Вашият коментар