Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Закрузка картинок и уменьшеная копия.
 
 автор: brys   (09.04.2008 в 14:18)   письмо автору
 
 

Скрипт загружает картинки из некоторого количества
<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); 
?>

   
 
 автор: himic   (09.04.2008 в 15:12)   письмо автору
 
   для: 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;          
  } 
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования