|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.08.2016, 22:21 | #1 |
Новичок
Джуниор
Регистрация: 28.08.2016
Сообщений: 1
|
создание миниатюр php
как сделать чтобы этот код не резал а масштабировал изображение сохраняя пропорции ив названии миниатюры ставил суфикс. помогите пожалйста
$thumb_directory = "images/thumb/"; //Папка для миниатюр 02 $orig_directory = "images/"; //Папка для полноразмерных изображений 03 04 $dir_handle = @opendir($orig_directory); //Открываем папку с полноразмерными изображениями 05 if ($dir_handle > 1){ //Проверяем, что папка открыта и в ней есть файлы 06 07 $allowed_types=array('jpg','jpeg',' gif','png'); // Список обрабатываемых расширений 08 $file_parts=array(); 09 $ext=''; 10 $title=''; 11 $i=0; 12 13 while ($file = @readdir($dir_handle)) 14 { 15 /* Пропускаем системные файлы: */ 16 if($file=='.' || $file == '..') continue; 17 18 $file_parts = explode('.',$file); //Разделяем имя файла на части 19 $ext = strtolower(array_pop($file_parts)); 20 21 /* Используем имя файла (без расширения) как заголовок изображения: */ 22 $title = implode('.',$file_parts); 23 $title = htmlspecialchars($title); 24 25 /* Если расширение входит в список обрабатываемых: */ 26 if(in_array($ext,$allowed_types)) 27 { 28 29 /* Если вы планируете хранить изображения в базе данных, вставьте код для запроса здесь */ 30 31 /* Далее следует код, который разбирался в уроке */ 32 /* Выводим каждое изображение: */ 33 34 $nw = 150; 35 $nh = 100; 36 $source = $orig_directory . $file; 37 $stype = explode(".", $source); 38 $stype = $stype[count($stype)-1]; 39 $dest = $thumb_directory . $file; 40 41 $size = getimagesize($source); 42 $w = $size[0]; 43 $h = $size[1]; 44 45 switch($stype) { 46 case 'gif': 47 $simg = imagecreatefromgif($source); 48 break; 49 case 'jpg': 50 $simg = imagecreatefromjpeg($source); 51 break; 52 case 'png': 53 $simg = imagecreatefrompng($source); 54 break; 55 } 56 57 $dimg = imagecreatetruecolor($nw, $nh); 58 $wm = $w/$nw; 59 $hm = $h/$nh; 60 $h_height = $nh/2; 61 $w_height = $nw/2; 62 63 if($w> $h) { 64 $adjusted_width = $w / $hm; 65 $half_width = $adjusted_width / 2; 66 $int_width = $half_width - $w_height; 67 imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$n h,$w,$h); 68 } elseif(($w <$h) || ($w == $h)) { 69 $adjusted_height = $h / $wm; 70 $half_height = $adjusted_height / 2; 71 $int_height = $half_height - $h_height; 72 73 imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_heigh t,$w,$h); 74 } else { 75 imagecopyresampled($dimg,$simg,0,0, 0,0,$nw,$nh,$w, $h); 76 } 77 imagejpeg($dimg,$dest,100); 78 } 79 } 80 81 /* Закрываем папку */ 82 @closedir($dir_handle); 83 84 } ?> |
07.09.2016, 17:33 | #2 |
Пользователь
Регистрация: 15.11.2012
Сообщений: 13
|
В подобных случаях помогает взять листок и нарисовать несколько прямоугольников, характеризующих «область вписывания» (максимальная длина/ширина изображения) и разные соотношения обрабатываемого изображения.
В общем случае, вычисляем коэффициенты отношения для ширины и высоты между изображением и областью вписывания. Далее смотрим, какой коэффициент больше, в зависимости от этого пропорционально масштабируется высота или ширина. Немного кода: PHP код:
PHP код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Извлечение миниатюр из файлов картинок | 3D Hunter | Win Api | 0 | 10.04.2015 09:23 |
Создание миниатюр, не загружая изображение поностью | DanilaN | C++ Builder | 1 | 12.10.2012 09:18 |
PHP. Создание комментариев | Makaralex | Помощь студентам | 3 | 21.07.2012 19:15 |
создание карты на php | ИльяМалиновский | PHP | 5 | 12.02.2009 18:18 |
HTML-документы в виде миниатюр(эскизов) | Shreksan | Софт | 0 | 15.01.2008 18:02 |