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

Форум PHP

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

 

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

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

тема: Изменить размер загружаемого изображения?
 
 автор: neokortex   (18.07.2007 в 10:21)   письмо автору
 
 

Как изменить размер загружаемого на сервер изображения?
я пользуюсь скриптом любезно предоставленным компанией Softtime.
http://softtime.ru/scripts/upload.php
как сделать resize с сохранением пропорций?

   
 
 автор: Киналь   (18.07.2007 в 11:50)   письмо автору
 
   для: neokortex   (18.07.2007 в 10:21)
 

Вот, загрузка изображения с одновременным созданием уменьшенной копии:

<?php
function image_upload($file_arr$copyright$path=""$width=100)
{

$filename=$file_arr['name'];
$type=$file_arr['type'];

$valid_types=array('image/jpeg''image/png''image/gif''image/vnd.wap.wbmp');
if (!
in_array($type$valid_types))
     die(
"К сожалению, формат файла не поддерживается.
          Допустимы форматы JPEG, PNG, GIF, WBMP"
);

if (!
move_uploaded_file($file_arr['tmp_name'], $path."fotos/$filename"))
     die(
"Произошла ошибка при загрузке файла.
          Код ошибки - 
$file_arr[error]");

//Основной файл закачан, тип проверен. можно работать дальше.

$imagesize=getimagesize($path.'fotos/'.$filename);
$img_x=$imagesize[0];
$img_y=$imagesize[1];

$division=$img_x/$img_y;
$small_x=$width;
$small_y=$small_x/$division;

//Создаем пустое изображение
$small_res=imagecreatetruecolor($small_x$small_y);

//Создаем изображение из основного файла
switch ($type)
{
        case(
'image/jpeg'):
              {
               
$main_res=imagecreatefromjpeg($path.'fotos/'.$filename);
               break;
              }
        case(
'image/gif'):
              {
               
$main_res=imagecreatefromgif($path.'fotos/'.$filename);
               break;
              }
        case(
'image/png'):
              {
               
$main_res=imagecreatefrompng($path.'fotos/'.$filename);
               break;
              }
        case(
'image/wbmp'):
              {
               
$main_res=imagecreatefromwbmp($path.'fotos/'.$filename);
               break;
              }
// end of switch

if (
    !
imagecopyresampled($small_res$main_res0000$small_x$small_y$img_x$img_y)
    )
    die(
"Ошибка при создании уменьшенной копии.");

//записываем на диск копию

if (
    !
imagejpeg($small_res$path.'small/small_'.$filename)
   )
   die(
"Ошибка при записи уменьшенной копии.");

// Вписываем копирайт
// Пишем черным цветом
$black=imagecolorallocate($main_res000);
imagestring($main_res599$copyright$black);
// Пишем белым цветом; результат - белый с черным контуром
$color=imagecolorallocate($main_res255255255);
imagestring($main_res41010$copyright$color);

switch (
$type)
{
        case(
'image/jpeg'):
              {
               
$m_rec=imagejpeg($main_res$path.'fotos/'.$filename);
               break;
              }
        case(
'image/gif'):
              {
               
$m_rec=imagegif($main_res$path.'fotos/'.$filename);
               break;
              }
        case(
'image/png'):
              {
               
$m_rec=imagepng($main_res$path.'fotos/'.$filename);
               break;
              }
        case(
'image/wbmp'):
              {
               
$m_rec=imagewbmp($main_res$path.'fotos/'.$filename);
               break;
              }
// end of switch

if (!$m_rec)
     {
      die(
"Ошибка при вписывании копирайта.");
     }

//копирайт вписан


//Все кончилось хорошо; уничтожаем все изображения
imagedestroy($main_res);
imagedestroy($small_res);

// конец функции image_upload

?>

   
 
 автор: Hidden Demon   (18.07.2007 в 11:57)   письмо автору
 
   для: Киналь   (18.07.2007 в 11:50)
 

возможны отказы
см. $valid_types

   
 
 автор: tuder   (18.07.2007 в 13:49)   письмо автору
 
   для: neokortex   (18.07.2007 в 10:21)
 

>как сделать resize с сохранением пропорций?

Рекомендую воспользоваться моей доработанной функцией и почитать обсуждение из этой темы

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=24389

   
Rambler's Top100
вверх

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