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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с размерами JPEG фалйа 
:(
    Опции темы
InfMag
Дата 10.4.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



В PHP же доступно работать с изображениями JPEG, так?
Дык мне вот что нужно:
  • Можно ли любой рисунок преобразовать в размер 100 на 100 без искажений, как это делает фотошоп?
  • Могу ли я при этом конверте сделать рисунок шириной в 100 пикселей, но если высота остается больше 100 пикселей, то ее не сжимать до 100, а сжать ширину до 100, а то, что останется ниже высоты в 100 обрезать?
  • И третье smile

Добавлено @ 16:25
Если что, то подскажите мне как хотябы только сжать до 100 на 100 рисунок любого размера, а потом передать его юзеру через заголовки. smile
PM   Вверх
Mal Hack
Дата 10.4.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(InfMag @ 10.4.2005, 17:21)
Можно ли любой рисунок преобразовать в размер 100 на 100 без искажений, как это делает фотошоп?

Да. imagecopyresampled();

Цитата(InfMag @ 10.4.2005, 17:21)
Могу ли я при этом конверте сделать рисунок шириной в 100 пикселей, но если высота остается больше 100 пикселей, то ее не сжимать до 100, а сжать ширину до 100, а то, что останется ниже высоты в 100 обрезать?

Да.

Цитата(InfMag @ 10.4.2005, 17:21)
И третье smile

http://php.net/image

PM ICQ   Вверх
InfMag
Дата 10.4.2005, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Mal Hack
Списиб. Погляжу. smile
PM   Вверх
InfMag
Дата 11.4.2005, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Я вот написал код:
Код

<?php
header("Content-type: image/jpeg");
$image = "upload/mydoom.jpg";
$img = ImageCreateFromJpeg($image);
$imgWidth = ImageSX($img);
$imgHeight = ImageSY($img);
$newHeight = $imgHeight;
$new_img = imagecreate(100, $newHeight); 
ImageCopyResized($new_img, $img, 0, 0, 0, 0, 100, $newHeight, $imgWidth, $imgHeight);
ImageDestroy($img);
ImageJpeg($new_img);
ImageDestroy($new_img);
?>

Как видите трабл в том, что я не знаю как подсчитать height. Мне нужно сделать так, чтобы height уменьшался вместе с width'ом, но тока, чтоб не также до 100, а чтобы пропорционально ему. Как это и делает браузер если у рисунка писать тока width <img src="picture.jpg" width=100>
Возникла также еще одна проблема. Искажения есть, но в цветах. Когда я вижу результат всего этого, то рисунок теряет много цветов. smile
Плиз, помогите.
PM   Вверх
InfMag
Дата 11.4.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Mal Hack
Я уже нашел.
http://forum.vingrad.ru/index.php?showtopi...=0&#entry124956
ImageCreateTrueColor()

Я вижу ты сам этому вопросу задавался. smile

Вот тока осталось с height'ом решить. smile
PM   Вверх
Ищущий!
Дата 20.4.2005, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А у меня была проблема с качеством картинки.. после такого скрипта (почти такого).. цвета искажались...

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


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


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

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



т.к. надо было не resize, а resampled использовать
PM ICQ   Вверх
$дмитрий
Дата 21.4.2005, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Цитата
Как видите трабл в том, что я не знаю как подсчитать height

Код

list($width, $height) = getimagesize($name_file);

Цитата
А у меня была проблема с качеством картинки..

Код

imagecopyresampled();

Цитата
Можно ли любой рисунок преобразовать в размер 100 на 100 без искажений,

Код

function pic($name_big)
{
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($name_big);
      $s_im=imagecreatefromjpeg($name_big);
      $d_im=imagecreatetruecolor(100, 100);
      imagecopyresampled($d_im, $s_im, 0, 0, 0, 0, 100, 100, $width, $height);
      imagejpeg($d_im);
      ImageDestroy($d_im);
}


Это сообщение отредактировал(а) $дмитрий - 21.4.2005, 23:35
PM MAIL   Вверх
Ищущий!
Дата 22.4.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот теперича можно вообстче бомбы делать... всмысле всё хорошо и красиво smile
PM MAIL   Вверх
Slayer2005
Дата 2.9.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чтоб изменить размеры, сохранить пропорции и не исказить цвета, советую такую вещь:

Код

//------------------------------------------Создание уменьшенной копии картинки JPG
 function MakeSmallImage($image, $smallwidth, $smallheight)
 { $sizes = @getimagesize($image);
 $width = $sizes[0];  $height = $sizes[1]; $type = $sizes[2]; 
 if ($smallwidth=="auto" && $smallheight=="auto") { $newwidth=$width; $newheight=$height;
                                                                               }
 if ($smallwidth>0 && $smallheight>0) { $newwidth=$smallwidth; $newheight=$smallheight;
                                                                               }                                                                               
 if ($smallwidth>0 && $smallheight=="auto") { $newwidth=$smallwidth; $mw=($width/$smallwidth);
 $newheight = ($height/$mw);                       }
 if ($smallwidth=="auto" && $smallheight>0) { $newheight=$smallheight; $mw=($height/$smallheight);
 $newwidth = ($width/$mw);                          }
 $im  = ImageCreateFromJPEG($image); $im2 = ImageCreateTrueColor($newwidth,$newheight);
 ImageCopyResampled($im2,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
 $image2=str_replace(".jpg","_s.jpg",$image);
 ImageGammacorrect ($im2, 1.0, 1.1); ImageJpeg($im2,$image2); ImageDestroy($im2);
 }


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


Velichko Anton
**


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

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



А можно классом воспользоваться....

Код

<?
class ImaSize { 
    var $image = 0; 

    function ImaSize($img='', $typ='') { 
        if($this->image) @ImageDestroy($this->image); 
        if($img!='') { 
            $typ = strtolower($typ); 
            if(($typ == 'string') || (!@file_exists($img))) $this->loadFromString($img); 
                else $this->loadFromFile($img, $typ); 
        } 
    } 

    function loadFromString($strng) { 
        if($this->image) @ImageDestroy($this->image); 
        return ($this->image = @ImageCreateFromString($strng)); 
    } 

    function loadFromFile($fn, $typ='') { 
        if($this->image) @ImageDestroy($this->image); 
        if(!@file_exists($fn)) $this->image = 0; else { 
            if(($typ=='jpeg')||($typ=='jpg')) $this->image = @ImageCreateFromJPEG($fn); 
            elseif($typ=='png') $this->image = @ImageCreateFromPNG($fn); 
            elseif($typ=='gif') $this->image = @ImageCreateFromGIF($fn); 
            if(!$this->image) { 
                $funcar = @get_extension_funcs('gd'); 
                foreach($funcar as $func) { 
                    if($this->image) break; 
                    $func = strtolower($func); 
                    if(substr($func,0,15) != 'imagecreatefrom') continue; 
                    if(substr($func,15) == 'string') continue; 
                    $this->image = @$func($fn); 
                } 
            } 
        } 
        return $this->image; 
    } 

    function sizeTo($x, $y, $clr=0) { 
        if((!$this->image) || (($x*$y) < 1)) return 0; 
        if(sizeof($clr) != 3) $clr = array(255,255,255); 
        $img = @ImageCreate($x, $y); 
        $bg = @ImageColorAllocate($img, $clr[0], $clr[1], $clr[2]); 
        $sx = @ImageSX($this->image); $sy = @ImageSY($this->image); 
        $dw = (float)($x / $sx); $dh = (float)($y / $sy); 
        $dd = ($dw < $dh) ? $dw : $dh; 
        @ImageCopyResized($img, $this->image, 
            (int)(($x-($sx*$dd))/2), (int)(($y-($sy*$dd))/2), 
            0, 0, 
            (int)($sx*$dd)+1, (int)($sy*$dd)+1, 
            $sx, $sy); 
        @ImageDestroy($this->image); 
        return ($this->image = $img); 
    } 
}; 
?>



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




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


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

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