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

Форум PHP

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

 

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

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

тема: Созданием уменьшенной копии.
 
 автор: Равечка   (19.11.2006 в 14:29)   письмо автору
 
 

Помогоите написать скрипт который бы создавал уменьшенную копию изображения.
Только чтобы не более указанных размеров (чтобы не было черных полей)
Буду очень Вам признательна.

   
 
 автор: NIK   (19.11.2006 в 14:39)   письмо автору
 
   для: Равечка   (19.11.2006 в 14:29)
 

собственно я это делаю по следующему алгоритму:
1. высчитываю размер превьюшки
2. создаю новое изображение с нужными размерами
3. открываю оригианал и копирую его с автоматическим уменьшением в созданное выше новое изображение (п.2)
4. сохранию конечную версию превьюшки

для всех этих махинаций понадобиться библиотека GDLib для PHP. У меню уже имеется готовый код, если хотите, могу подлиться, не жалко :)

   
 
 автор: Равечка   (19.11.2006 в 15:19)   письмо автору
 
   для: NIK   (19.11.2006 в 14:39)
 

Да хочу. просто проблема такая... У меня есть скрипт который получает файл .jpg сохраняет его в папку, потом делает уменьшенную копию и сохраняет в другую папку... проблема лишь в том что остаются черные поля.. =(

   
 
 автор: Lelik   (19.11.2006 в 16:06)   письмо автору
 
   для: Равечка   (19.11.2006 в 15:19)
 

точно не помню адрес... но в поиске по слову "превьюшка" должны найтись темы с готовым скриптом

   
 
 автор: NIK   (19.11.2006 в 16:55)   письмо автору
 
   для: Равечка   (19.11.2006 в 15:19)
 

форма:

echo "<form action='' enctype='multipart/form-data' method='POST'>
            <input class='text' type='file' name='file'>
           </form>";


обработчик

if ($_FILES['file']['type'] == "image/jpeg" OR $_FILES['file']['type'] == "image/pjpeg" OR $_FILES['file']['type'] == "image/png" OR $_FILES['file']['type'] == "image/x-png" OR $_FILES['file']['type'] == "image/gif") {
         ########################################################
         # Блок кода для создания превьюшек больших изображений 
         ########################################################

         # Копируем оригинальное изображение
         if(!copy($_FILES['file']['tmp_name'], "big_".$_FILES['file']['name'])) {
           $error = $error."<li><b> Ошибка при копировании изображения</b>";
         }


         # Собираем информацию о изображении
         $img_url = "big_".$_FILES['file']['name']; // адрес оригинального изображения
         $img_name = $_FILES['file']['name']; // имя 
         $img_size = $_FILES['file']['size']; // размер
         $img_info = getimagesize($img_url);
         $img_width = $img_info['0'];   // ширина изображения
         $img_height = $img_info['1'];  // высота изображения
         $img_format = $img_info['2'];  // расширение файла
         $img_format = image_type_to_mime_type($img_format); // mime-тип

         # Провереям, превышает ли ширина 450 пикселов
         if ($img_width > 450) {
           # Определяем высоту будующей превьюшки
           $img_real_height = $img_height;                  // перед этим резервируем реальную высоту
           $width_diff = $img_width - 450;                  // выясняем, на сколько мы урезали изображение в ширине
           $one_percent = $width_diff/100;                  // 1% от того, на сколько урезали
           $thirty_percent = 30*$one_percent;               // 30% от того, на сколько урезали
           $img_height = $img_real_height/($img_width/450); // новая уменьшанная высота изображения
           $img_height = @floor($img_height);               // убираем дробную часть

           # Определяем название превью
           $preview_name = "small_".$_FILES['file']['name'];

           # Создаем пустое изображение
           $preview_true_color = imagecreatetruecolor(450, $img_height);

           # Определяем формат изображения и открываем наше большое изображение (оригинальное)
           # Если формат изображения JPG
           if ($img_format == "image/jpeg") {
             $img_src = imagecreatefromjpeg($img_url);
           }

           # Если формат изображения PNG
           if ($img_format == "image/png") {
             $img_src = imagecreatefrompng($img_url);
           }

           # Если формат изображения GIF
           if ($img_format == "image/gif") {
             $img_src = imagecreatefromgif($img_url);
           }

           # Копируем в пустое изображение уменьшенную компию большого изображения (оригинального)
           if (imagecopyresampled($preview_true_color, $img_src, 0, 0, 0, 0, 450, $img_height, $img_width, $img_real_height)) {
             # Если копирование успешно, записываем готовое превью изображения в формате JPG
             if (!imagejpeg($preview_true_color, $preview_name, 100)) {
               $error = $error."<li><b> Ошибка при создании изображения</b>";
             }
           } else {
             $error = $error."<li><b> Ошибка при копировании изображения</b>";
           }

           # Разрушаем изображения
           if (!imagedestroy($img_src)) {
             $error = $error."<li><b> Ошибка при разрушении изображения!</b>";
           }
           if (!imagedestroy($preview_true_color)) {
             $error = $error."<li><b> Ошибка при разрушении изображения!</b>";
           }
         }
       } else {
         $error = $error."<li><b> Вы должны выбрать Изображение в формате <u>jpg</u> или <u>png</u></b>";
      }

   
 
 автор: cheops   (20.11.2006 в 12:04)   письмо автору
 
   для: Равечка   (19.11.2006 в 14:29)
 

Такой скрипт можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145.

   
Rambler's Top100
вверх

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