Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как поменять цвет фона миниатюр с черного на белый

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Telnet
Отправлено: 07 Июля, 2011 - 10:53:29
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Есть вот такая функция из Joomla
Работает все нормально миниатюры создаются , но цвет фона у всех прозразных типов (gif,png) получается черный.
Хотя вроде переиенная $white = imagecolorallocate($dest_img, 255, 255, 255);
установлена в белый цвет, но она не где не используется.
Помогите это исправить.
PHP:
скопировать код в буфер обмена
  1.         function createThumb($path){//path to the user folder into upload
  2.                 global $filename;
  3.                 global $username;
  4.                 $orig_directory = realpath(substr("upload".DS.$username.DS."index.html", 0, -10)).DS;//Папка для полноразмерных изображений
  5.                 $thumb_directory = realpath(substr("upload".DS.$username.DS."thumb".DS."index.html", 0, -10)).DS;//Папка для миниатюр
  6.                 $width = 150;//thumb width
  7.                 $height = 100;//thumb height
  8.                 // имя файла с маштабируемым изображением
  9.                 $big = $orig_directory.$filename;
  10.                 // имя файла с уменьшенной копией
  11.                 $small= $thumb_directory.$filename;
  12.                 //определиям коэфицент сжатия генерируемого изображения
  13.                 $ratio = $width/$height;
  14.                 // получаем размеры исходного изображения
  15.                 $size_img = getimagesize($big);
  16.                 list($width_src, $height_src) = getimagesize($big);
  17.                 // если размеры меньше, то маштабирование не нужно
  18.                         if(($width_src<$width) && ($height_src<$height)) {
  19.                                 copy($big, $small);
  20.                                 return true;
  21.                         }
  22.                 // получаем коэфицент сжатия исходного изображения
  23.                 $src_ratio = $width_src/$height_src;
  24.                 // вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
  25.                         if ($ratio<$src_ratio) {
  26.                                 $height = $width/$src_ratio;
  27.                         }
  28.                         else {
  29.                                 $width = $height*$src_ratio;
  30.                         }
  31.                 // создаем пустое изображение п заданным размерам
  32.                 $dest_img = imagecreatetruecolor($width,$height);
  33.                 $white    = imagecolorallocate($dest_img, 255, 255, 255);
  34.                         if ($size_img[2] == 2)      $src_img = imagecreatefromjpeg($big);
  35.                         else if ($size_img[2] == 1) $src_img = imagecreatefromgif($big);
  36.                         else if ($size_img[2] == 3) $src_img = imagecreatefrompng($big);
  37.                          
  38.                 // маштабируем изображение функцией imagecopysapled()
  39.                 // $dest_img - уменьшенная копия
  40.                 // $src_img  - исходное изображение
  41.                 // $width    - ширина уменьшенной копии
  42.                 // $height   - высота уменьшенной копии
  43.                 // $size_img[0] - ширина исходного изображения
  44.                 // $srze_img[1] - высота исходного изображения
  45.                          
  46.                 imagecopyresampled($dest_img,
  47.                                                         $src_img,
  48.                                                         0,
  49.                                                         0,
  50.                                                         0,
  51.                                                         0,
  52.                                                         $width,
  53.                                                         $height,
  54.                                                         $width_src,
  55.                                                         $height_src);
  56.                          
  57.                 // сохраняем уменьшенную копию в файл
  58.                         if ($size_img[2]==2) imagejpeg($dest_img,$small);
  59.                         else if ($size_img[2]==1) imagegif($dest_img,$small);
  60.                         else if ($size_img[2]==3) imagepng($dest_img,$small);
  61.                 // очищаем память от созданных изображений
  62.                 imagedestroy($dest_img);
  63.                 imagedestroy($src_img);
  64.                 return true;
  65.  
  66.         }
  67.  
 
 Top
tsoi85
Отправлено: 07 Июля, 2011 - 11:18:02
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. #После:
  3. $white = imagecolorallocate($dest_img, 255, 255, 255);
  4. #Добавьте:
  5. imagefill($dest_img, 0, 0, $white);
  6.  
 
 Top
Telnet
Отправлено: 07 Июля, 2011 - 12:00:49
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




tsoi85 Спасибо за помощь.
Возник еще один вопрос, хотя ситуация мало вероятная, но все же если человек, возмет допустим файл формата 1.DOC и переименует в 1.jpg, то можно сделать так что бы миниатюра вообще не создавалась, а то щас thumb_directory //Папка для миниатюр появляется тот же самый ложный 1.jpg файл, ни какой миниатюры вообще не создается, так как это не картинка вообще но файл 1.jpg сохраняется.
или нужно просто не позволять пользователю осуществлять загрузку таких файлов
Для загрузки использую вот эту функцую
PHP:
скопировать код в буфер обмена
  1.  
  2.         function  UrlUpoald(){
  3.                 global $upload_dir;
  4.                 global $filename;
  5.                 $app = & JFactory::getApplication();
  6.                 $url = JRequest::getVar('url');
  7.                 if(isset($url) && !empty($url)){
  8.                         $filename = basename($url);
  9.                         $ext = JFile::getExt($filename);
  10.                         if($ext=='gif' || $ext=='jpg' || $ext=='jpeg' || $ext=='png'){
  11.                                 //dump(get_headers($url) ,"get_headers");
  12.                                 $filepath = $this->createFolder(). DS .$filename;
  13.                                 $content = file_get_contents($url);
  14.                                 $f = fopen( "$filepath", "w" );
  15.                                 fwrite( $f, $content );
  16.                                 fclose( $f );
  17.                                 $app->enqueueMessage( JText::_('FILE_SAVE_AS').' '.$filepath,'message');
  18.                         } else {
  19.                                 $app->enqueueMessage( JText::_('FILE_TYPE_INVALID'),'error');
  20.                         }
  21.                         return $filepath;
  22.                 }
  23.         }
  24.  

так я там и так делаю проверку по расширению файла, но это не достаточно
для примера положил такой переименованный файл http://smstochka[dot]nx0[dot]ru/123[dot]jpg
вот что показывает функция get_headers("http://smstochka.nx0.ru/123.jpg");
[array] get_headers

[string] 0 = "HTTP/1.1 200 OK"
[string] 1 = "Server: nginx/0.7.67"
[string] 2 = "Date: Thu, 07 Jul 2011 09:31:20 GMT"
[string] 3 = "Content-Type: image/jpeg"
[string] 4 = "Connection: close"
[string] 5 = "Content-Length: 11128"
[string] 6 = "Last-Modified: Thu, 07 Jul 2011 08:09:38 GMT"
[string] 7 = "Accept-Ranges: bytes"
хотя при загрузке на файловые хостинги они как то определяют, что это файл не картинка.
Может мне кто нить помочь, определить правильно тип файла.

(Отредактировано автором: 07 Июля, 2011 - 12:52:28)

 
 Top
tsoi85
Отправлено: 07 Июля, 2011 - 14:17:08
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




 
 Top
Telnet
Отправлено: 07 Июля, 2011 - 23:42:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




mime_content_type — Detect MIME Content-type for a file (deprecated)
это отсюда http://www.php.net/manual/en/ref.fileinfo.php
а тут сказано (только PHP 4CVS), а что такое CVS?
а при таком использовании
<?php
echo mime_content_type('http://smstochka[dot]nx0[dot]ru/123[dot]jpg ') ;
?>
пишет Fatal error: Call to undefined function mime_content_type() in Z:\home\localhost\www\First\hlam\filter_list.php on line 2
типа не определенная функция
че то не работает Огорчение
 
 Top
tsoi85
Отправлено: 07 Июля, 2011 - 23:59:32
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




Как вариант посмотрите: http://www.php.su/functions/?getimagesize
 
 Top
Telnet
Отправлено: 08 Июля, 2011 - 22:11:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




getimagesize хоть и определяет размер изображений GIF, JPG, PNG, SWF, PSD, TIFF или BMP
браузер кажись понимает только GIF, JPG, PNG ну еще может WebM, новый гугловский формат, все таки это гораздо лучше чем было.

А не подскажите как мне к приведенному в начале поста скрипу для генерации миниатюр, прикрутить функцию позволяющую задавать качество создаваемых GIF и PNG файлов.
А то размеры миниатюры JPG 3-4 кб, а GIF PNG от 7 и более зависит конешно от размера входного файла, хотелось бы уменьшить размер миниатюр.
 
 Top
tsoi85
Отправлено: 08 Июля, 2011 - 22:22:08
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




Качество можно задать только для .jpg
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB