|
|
|
| Скрипт загружает картинки из некоторого количества
<input name="img[]" type="file" >
|
и создает папки для картинок, если это нужно... + добавляет данные в БД
Помогите усовершенствовать скрипт, чтобы он еще делал уменьшенную копию картинке
<?php
$SQL='';
for ($i = 0; $i < count($_FILES['img']['name']); $i++ )
{
if(is_uploaded_file($_FILES['img']['tmp_name'][$i]))
{
if(file_exists($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id)==false)
{
mkdir($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id, 0700);
}
if(file_exists($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id."/img".$i)==false)
{
mkdir($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id."/img".$i, 0700);
mkdir($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id."/img".$i."/small", 0700);
}
copy($_FILES['img']['tmp_name'][$i], $_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id."/img".$i."/".$_FILES['img']['name'][$i]);
$SQL=$SQL.",`img".$i."`='".$_FILES['img']['name'][$i]."'";
}
}
$sql_insert = "INSERT INTO dnd_thing SET `name` ='".$name."', `text` ='".$text."', `catid` = '".$catid."', `secid` = '".$secid."',
`dostavka` = '".$dostavka."', `added` = '".$added."', `active` = '".$active."', `reiting` = '".$reiting."', `ip` = '".$ip."'
".$SQL;
mysql_query($sql_insert);
?>
|
Создаю для уменьшенных картинок папку
<?php
mkdir($_SERVER["DOCUMENT_ROOT"]."/dnd/img_thing/".$id."/img".$i."/small", 0700);
?>
|
| |
|
|
|
|
|
|
|
для: brys
(09.04.2008 в 14:18)
| | Вот очень удобная функция для создания уменьшенных копий
<? function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
$filename = "files/".$filename;
// Имя файла с уменьшенной копией.
$smallimage = "files/".$smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
} ?>
|
| |
|
|
|