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

Форум PHP

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

 

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

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

тема: сжатие/увеличение размеров изображения
 
 автор: krollik   (24.12.2006 в 11:23)   письмо автору
 
 

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

   
 
 автор: cheops   (24.12.2006 в 13:40)   письмо автору
 
   для: krollik   (24.12.2006 в 11:23)
 

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

   
 
 автор: krollik   (24.12.2006 в 23:05)   письмо автору
 
   для: cheops   (24.12.2006 в 13:40)
 

Скрипт замечательный, но при уменьшении gif он не сохраняет прозрачность, а заполняет её чёрным цветом.. =( Это можно как-то исправить?
Ну или хотябы залить прозрачный фон другим цветом

   
 
 автор: krollik   (25.12.2006 в 10:17)   письмо автору
 
   для: krollik   (24.12.2006 в 23:05)
 

Вопрос ещё актуален

   
 
 автор: mindless   (25.12.2006 в 20:03)   письмо автору
 
   для: krollik   (25.12.2006 в 10:17)
 


<?php

  define
('SOURCE''original.jpg');  // исходный файл
  
define('TARGET''small.jpg');     // имя файла для "превьюшки"
  
define('NEWX'100);               // ширина "превьюшки"
  
define('NEWY'60);                // высота "превьюшки"

  // Определяем размер изображения с помощью функции getimagesize:
  
$size getimagesize(SOURCE);
  
// Функция getimagesize, требуя в качестве своего параметра имя файла,
  // возвращает массив, содержащий (помимо прочего, о чем можно прочитать
  // в документации), ширину - $size[0] - и высоту - $size[1] -
  // указанного изображения. Кстати, для ее использования не требуется наличие
  // библиотеки GD, так как она работает непосредственно с заголовками
  // графических файлов. В случае, если формат файла не распознан, getimagesize
  // возвращает false:
  
if ($size === false) die ('Bad image file!');

  
// Читаем в память JPEG-файл с помощью функции imagecreatefromjpeg:
  
$source imagecreatefromjpeg(SOURCE)
    or die(
'Cannot load original JPEG');

  
// Создаем новое изображение
  
$target imagecreatetruecolor(NEWXNEWY);
  
  
// Копируем существующее изображение в новое с изменением размера:
  
imagecopyresampled(
    
$target,  // Идентификатор нового изображения
    
$source,  // Идентификатор исходного изображения
    
0,0,      // Координаты (x,y) верхнего левого угла
              // в новом изображении
    
0,0,      // Координаты (x,y) верхнего левого угла копируемого
              // блока существующего изображения
    
NEWX,     // Новая ширина копируемого блока
    
NEWY,     // Новая высота копируемого блока
    
$size[0], // Ширина исходного копируемого блока
    
$size[1]  // Высота исходного копируемого блока
    
);

  
// Сохраняем результат в JPEG-файле:
  // Функции генерации графических файлов, такие как imagejpeg,
  // могут выводить результат своей работы не только в броузер,
  // но и в файл. Для этого следует указать имя файла в необязательном
  // втором параметре.
  // Именно функция imagejpeg имеет и третий необязательный параметр -
  // качество изображения. Установим максимальное качество - 100.
  
imagejpeg($targetTARGET100);

  
// Как всегда, не забываем:
  
imagedestroy($target);
  
imagedestroy($source);
?>



<?php
/***********************************************************************************
Функция img_resize(): генерация thumbnails
Параметры:
  $src             - имя исходного файла
  $dest            - имя генерируемого файла
  $width, $height  - ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
  $rgb             - цвет фона, по умолчанию - белый
  $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)
***********************************************************************************/
function img_resize($src$dest$width$height$rgb=0xFFFFFF$quality=100)
{
  if (!
file_exists($src)) return false;

  
$size getimagesize($src);

  if (
$size === false) return false;

  
// Определяем исходный формат по MIME-информации, предоставленной
  // функцией getimagesize, и выбираем соответствующую формату
  // imagecreatefrom-функцию.
  
$format strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  
$icfunc "imagecreatefrom" $format;
  if (!
function_exists($icfunc)) return false;

  
$x_ratio $width $size[0];
  
$y_ratio $height $size[1];

  
$ratio       min($x_ratio$y_ratio);
  
$use_x_ratio = ($x_ratio == $ratio);

  
$new_width   $use_x_ratio  $width  floor($size[0] * $ratio);
  
$new_height  = !$use_x_ratio $height floor($size[1] * $ratio);
  
$new_left    $use_x_ratio  floor(($width $new_width) / 2);
  
$new_top     = !$use_x_ratio floor(($height $new_height) / 2);

  
$isrc $icfunc($src);
  
$idest imagecreatetruecolor($width$height);

  
imagefill($idest00$rgb);
  
imagecopyresampled($idest$isrc$new_left$new_top00
    
$new_width$new_height$size[0], $size[1]);

  
imagejpeg($idest$dest$quality);

  
imagedestroy($isrc);
  
imagedestroy($idest);

  return 
true;

}
?>
//Поместим этот код в файл imgresize.php. 
//Пример использования функции img_resize: 

<?php

  
require ('imgresize.php');
  if (
img_resize('original.jpg''small.jpg'10060))
    echo 
'Image resized OK';
  else
    echo 
'Resize failed!';

?>

   
 
 автор: krollik   (25.12.2006 в 20:23)   письмо автору
 
   для: mindless   (25.12.2006 в 20:03)
 

Что-то я не уверен, что он будет сохранять прозрачность у gif

   
 
 автор: mindless   (25.12.2006 в 22:59)   письмо автору
 
   для: krollik   (25.12.2006 в 20:23)
 

такое можно ?

   
 
 автор: krollik   (26.12.2006 в 09:13)   письмо автору
 
   для: mindless   (25.12.2006 в 22:59)
 

Говорят, если использоавать iM то можно

   
Rambler's Top100
вверх

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