Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение размеров изображения 
:(
    Опции темы
fregs
Дата 25.3.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 25.11.2004

Репутация: 1
Всего: 1



в загадках
меняю размеры изображения..
а в результате почему то выходит ерунда.. результирующее изображение ллибо сильно искажается либо вообще черный прямоугольник...
в чем проблема непонимаю

вот код:
Код

// reading image type
                $r_img = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
                if (!$r_img) $r_img = @imagecreatefromgif($_FILES['file']['tmp_name']);
                if (!$r_img) $r_img = @imagecreatefrompng($_FILES['file']['tmp_name']);
                if ($r_img) {
                    $i_img_x = imagesx($r_img);
                    $i_img_y = imagesy($r_img);
                    $i_x_ratio = $_max_img_w / $i_img_x ;
                    $i_y_ratio = $_max_img_h / $i_img_y ;
                    if (($i_x_ratio < 1) || ($i_y_ratio < 1)){
                        if ($i_x_ratio < $i_y_ratio){
                            $i_img_x2 = $_max_img_w;
                            $i_img_y2 = round($i_img_y * $i_x_ratio);
                            $r_img2 = imagecreate($i_img_x2, $i_img_y2);
                            imagecopyresampled($r_img2, $r_img, 0,0,0,0, $i_img_x2, $i_img_y2, $i_img_x, $i_img_y);
                        } else {
                            $i_img_y2 = $_max_img_h;
                            $i_img_x2 = round($i_img_x * $i_y_ratio);
                            $r_img2 = imagecreate($i_img_x2, $i_img_y2);
                            imagecopyresampled($r_img2, $r_img, 0,0,0,0, $i_img_x2, $i_img_y2, $i_img_x, $i_img_y);
                        } //end resize
                    } else {
                        $r_img2 = imagecreate($i_img_x, $i_img_y);
                        imagecopy($r_img2, $r_img, 0,0,0,0, $i_img_x, $i_img_y);
                    }// end image > max
                    imagejpeg($r_img2, $_img_dir.$_POST['dtm'].'.jpg',99);
                    imagedestroy($r_img2);
                    imagedestroy($r_img);
                    $_POST['img'] = $_POST['dtm'].'.jpg';
                } else {
                    $s_err = 'Не удалось открыть файл! Файл неизвестного типа!';
                } // end reading image type

PM MAIL WWW   Вверх
Mal Hack
Дата 25.3.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Ты сделай сначала для одного формата, а потом будешь остальные прикручивать.
К тому же. У тебя 3 раза imagecreatefrom на 3 разных формата, а а imagecreate только на 1 - JPG

Это сообщение отредактировал(а) Mal Hack - 25.3.2005, 13:40
PM ICQ   Вверх
fregs
Дата 25.3.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 25.11.2004

Репутация: 1
Всего: 1



Mal Hack

Цитата
У тебя 3 раза imagecreatefrom на 3 разных формата, а а imagecreate только на 1 - JPG


так задумано... не знаю какого формата будет входной файл... выходной в любом случае Jpeg

по вопросу...
была ошибка при изменении размера, где не нашел..
написал отдельную функцию... теперь работает...
если кому надо - вот код
Код

/* image_resize()
  возвращаем img */
  function image_resize ( $r_img, $i_max_img_width, $i_max_img_heigth, $i_bg = 0 ) {
    $f_aspect = $i_max_img_width / $i_max_img_heigth; 
         
    $i_img_x = imagesx($r_img); 
    $i_img_y = imagesy($r_img); 
    $f_aspect2 = $i_img_x / $i_img_y; 

    $f_delta = $f_aspect < $f_aspect2 ? $i_max_img_width/$i_img_x : $i_max_img_heigth/$i_img_y; 
    $i_img_x2 = floor($i_img_x*$f_delta); 
    $i_img_y2 = floor($i_img_y*$f_delta); 
        
        $r_img2 = imagecreatetruecolor($i_img_x2, $i_img_y2); 
    imagefill($r_img2,0,0,$i_bg); 
        
    imagecopyresampled($r_img2, $r_img, 0,0,0,0, $i_img_x2,$i_img_y2,$i_img_x,$i_img_y); 
        return $r_img2;
  } // END of  image_resize()

PM MAIL WWW   Вверх
Aliance
Дата 8.5.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



А как ее подключать-то?
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 8.5.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Aliance @ 8.5.2005, 14:27)
А как ее подключать-то?

Кого? GD? Поюзай поиск было уже.
Или функцию? ей параметры картинки и указатель на нее передается.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0864 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.