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

Форум PHP

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

 

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

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

тема: Динамическое создание миниатюр изображений
 
 автор: nikolai   (01.08.2011 в 22:23)   письмо автору
 
 

Добрый вечер,
Нужна была функция, которая должна создавать миниатюры изображения нужного размера. Поискал в интернете решения, нашел парочку вариантов воплощения, собрал все в кучу и вот что получилось. (Все четко и хорошо работает, но только фон на слишком не пропорциональных размерах миниатюр получается черный. Подскажите, как переделать на белый фон или какой либо другой?)


function imageThumb($source, $nw, $nh)
   {
        $source = $source;        // Исходное изображение
        $nw = $nw;    // Ширина миниатюры
        $nh = $nh;    // Высота миниатюры

        //Отделяем и получаем имя файла с разширением
        $sd = explode("/", $source);
        $fil = $sd[count($sd)-1];
        
        $sd = explode(".", $fil);
        $names = md5($sd[count($sd)-2]);     // Получаем только имя файла (без разширения) в md5
        $stype = strtolower($sd[count($sd)-1]);     // Получаем расширение файла в нижнем регистре
        
        $dest = "thmb_cache/".$names."_w".$nw."_h".$nh.".jpg";   // Имя файла с результатом работы
        
        switch($stype) {
            case 'gif':
            $simg = imagecreatefromgif($source);
            break;
            case 'jpg':
            $simg = imagecreatefromjpeg($source);
            break;
            case 'jpeg':
            $simg = imagecreatefromjpeg($source);
            break;
            case 'png':
            $simg = imagecreatefrompng($source);
            break;
        }

        //получаем размер оригинального изображения
        $size = getimagesize($source);
        $w = $size[0];    // Ширина 
        $h = $size[1];    // Высота

        if($nw>$w or $nh>$h){
            $nw=$w;
            $nh=$h;
        }
        
        $dimg = imagecreatetruecolor($nw, $nh);
        $wm = $w/$nw;
        $hm = $h/$nh;
        $h_height = $nh/2;
        $w_height = $nw/2;
        
        if($w > $h) {
            $adjusted_width = $w / $hm;
            $half_width = $adjusted_width / 2;
            $int_width = $half_width - $w_height;
            imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
        } else if(($w < $h) || ($w == $h)) {
                $adjusted_height = $h / $wm;
                $half_height = $adjusted_height / 2;
                $int_height = $half_height - $h_height;
                imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
             } else {     
                imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h); 
             }     
        imagejpeg($dimg,$dest,100);

   return $dest;
   }

  Ответить  
 
 автор: nikolai   (01.08.2011 в 22:33)   письмо автору
 
   для: nikolai   (01.08.2011 в 22:23)
 

sorry уже сам разобрался.. нужно добавить после строки
$dimg = imagecreatetruecolor($nw, $nh); 

строки
$col = imagecolorallocate($dimg, 219, 219, 219); // (фон серый)
imagefilledrectangle($dimg,0,0,$nw+10,$nh+10,$col);



Вот только кто теперь подскажет, как написать функцию, которая будет переводить из обычного 16-ричного HTML #FFFFFF в RGB (255,255,255) чтоб можно было в функцию которая выше, передавать также цвет в HTML для фона миниатюры!

  Ответить  
 
 автор: Киналь   (01.08.2011 в 22:46)   письмо автору
 
   для: nikolai   (01.08.2011 в 22:33)
 

>Вот только кто теперь подскажет, как написать функцию, которая будет переводить из обычного 16-ричного HTML #FFFFFF в RGB (255,255,255) чтоб можно было в функцию которая выше, передавать также цвет в HTML для фона миниатюры!

substr(), hex2dec().

  Ответить  
Rambler's Top100
вверх

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