Старый 28.10.2009, 19:31   #1
Мастер
 
Аватар для omnislash
 
Регистрация: 13.08.2008
Адрес: DreamLand
Сообщений: 940
Вес репутации: 225
omnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущее
Отправить сообщение для omnislash с помощью ICQ
Lightbulb Ресайз изображений в PHP

Есть такая функция у меня:
PHP код:
function res($image_in$image_out$width_end$height_end$thumb=0) {

    
$jpeg_quality 80;

    if (
strpos(strtolower($image_in),'.jpeg') !== false) {$_ext='jpeg';}
    elseif (
strpos(strtolower($image_in),'.jpg') !== false) {$_ext='jpeg';}
    elseif (
strpos(strtolower($image_in),'.gif') !== false) {$_ext='gif';}
    elseif (
strpos(strtolower($image_in),'.png') !== false) {$_ext='png';}
    else {
$_ext='';}

    if ((
$_ext!='') and (file_exists($image_in))) {
        list(
$_width,$_height) = getimagesize($image_in); //получаем длину и ширину картинки
        
if ($thumb) {
            
$height_end floor($width_end*$_height/$_width); //тут получаем новую высоту
        
}
        if (
$width_end == 1281) {$width_end 1280$height_end 1024;}
        if (
$_width == 1280 && $_height == 1024) {
             if (
$width_end == 178) {$height_end 133;}
             if (
$width_end == 480) {$height_end 300;}
        }
        
$_thumb=imagecreatetruecolor($width_end,$height_end); //создаём новую картинку
        
$_func='imagecreatefrom'.$_ext//определяем по расширению, какую функцию будем юзать
        
$_source=$_func($image_in); //открываем исходную картинку и загоняем её в $source
        
imagecopyresampled($_thumb$_source0000$width_end$height_end$_width$_height);
        
$_func='image'.$_ext//функция для вывода картинки в браузер
        
if ($_func!='imagejpeg') {$_func($_thumb$image_out);} else {$_func($_thumb$image_out$jpeg_quality);} //рисуем картинку

    
}

в итоге выходят превью в зависимости от размера исходного изображения
если изображение 4:3 то получается 178x133, если широкое то 178x111.
Вот хотелось бы чтобы для всех изображений было одинаково скажем 178x133 - подскажите как сделать. Заранее благодарен.
__________________
Здесь неплохо платят за тизеры и за кликандер
omnislash вне форума   Ответить с цитированием
Старый 28.10.2009, 19:41   #2
Специалист
 
Аватар для kibergex
 
Регистрация: 08.06.2009
Адрес: Саудовская Аравия
Сообщений: 168
Вес репутации: 0
kibergex не любят в этих краяхkibergex не любят в этих краяхkibergex не любят в этих краях
По умолчанию

в imagecopyresampled() замени $width_end и $height_end на высоту и ширину которую хотел бы видеть
kibergex вне форума   Ответить с цитированием
Старый 28.10.2009, 19:59   #3
Мастер
 
Аватар для omnislash
 
Регистрация: 13.08.2008
Адрес: DreamLand
Сообщений: 940
Вес репутации: 225
omnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущее
Отправить сообщение для omnislash с помощью ICQ
По умолчанию

нет - не то - не работает....есть еще варианты?
__________________
Здесь неплохо платят за тизеры и за кликандер
omnislash вне форума   Ответить с цитированием
Старый 28.10.2009, 20:05   #4
шайтанама
 
Аватар для shadx
 
Регистрация: 13.07.2007
Сообщений: 1,700
Вес репутации: 298
shadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущее
Отправить сообщение для shadx с помощью ICQ
По умолчанию

есть ....
щас вспомню как класс называется ...
_http://www.phpclasses.org/browse/package/2181.html может почти все ...
shadx вне форума   Ответить с цитированием
Старый 28.10.2009, 20:11   #5
Мастер
 
Аватар для omnislash
 
Регистрация: 13.08.2008
Адрес: DreamLand
Сообщений: 940
Вес репутации: 225
omnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущее
Отправить сообщение для omnislash с помощью ICQ
По умолчанию

shadx, а с тем функционалом что есть в GD - никак??
__________________
Здесь неплохо платят за тизеры и за кликандер
omnislash вне форума   Ответить с цитированием
Старый 28.10.2009, 20:37   #6
шайтанама
 
Аватар для shadx
 
Регистрация: 13.07.2007
Сообщений: 1,700
Вес репутации: 298
shadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущееshadx - прекрасное будущее
Отправить сообщение для shadx с помощью ICQ
По умолчанию

если нужен фиксированый размер, и без рамок *читай полей*, то придется уже математику вспоминать ...

Есть свой класс, но у меня к нему нету документации ... а эта штука делает тоже самое запросто и задать надо всего несколько параметров.

Добавлено через 1 минуту
Есть еще такой вариант, когда то делал, но с полями.

PHP код:
function img_resize($src$dest$width$height$rgb=0xFFFFFF$proportion=false$quality=100) {
        if(!
file_exists($src)) return false;
        
$size getimagesize($src);
        if(
$size === false) return false;  
        if(
$proportion === true) {
            
$h0 $height;
            
$height = ($width/$size[0])*$size[1];
            if(
$height $h0) { $height $h0$width = ($height/$size[1])*$size[0]; }}
        if(
$width $size[0]) $width $size[0];
        if(
$height $size[1]) $height $size[1];
        
$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);
        if(
$use_x_ratio) { $new_width $width$new_left 0; }
        else { 
$new_width floor($size[0] * $ratio); $new_left floor(($width $new_width) / 2); }
        if(!
$use_x_ratio) { $new_height $height$new_top 0; }
        else { 
$new_height floor($size[1] * $ratio); $new_top floor(($height $new_height) / 2); }
        
$isrc $icfunc($src);
        
$idest imagecreatetruecolor($width$height);
        if(
is_array($dest)) {
            
$nd explode('.'$src);
            
$ndc count($nd);
            
$nd[$ndc 2] .= $dest[0]; $dest implode('.'$nd); }
        
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 
$dest
    } 

Последний раз редактировалось shadx; 28.10.2009 в 20:37. Причина: Добавлено сообщение
shadx вне форума   Ответить с цитированием
Старый 28.10.2009, 20:42   #7
Мастер
 
Аватар для Hanapi
 
Регистрация: 05.06.2008
Адрес: Somali
Сообщений: 648
Вес репутации: 232
Hanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущееHanapi - прекрасное будущее
По умолчанию

omnislash, лень разбираться в Вашем коде. Для себя уже давно решил, что изобретать велосипед - дело н****годарное. В Вашем частном случае поможет PHPThumb - там есть все что Вам нужно
__________________
хостинг с root доступом
помог? отблагодари!
Hanapi вне форума   Ответить с цитированием
Старый 28.10.2009, 20:54   #8
Мастер
 
Аватар для omnislash
 
Регистрация: 13.08.2008
Адрес: DreamLand
Сообщений: 940
Вес репутации: 225
omnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущееomnislash - прекрасное будущее
Отправить сообщение для omnislash с помощью ICQ
По умолчанию

Да уже сам разобрался.))..всем спасибо за содействие
__________________
Здесь неплохо платят за тизеры и за кликандер
omnislash вне форума   Ответить с цитированием
Старый 29.10.2009, 10:46   #9
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 236
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Извините, но
PHP код:
    if (strpos(strtolower($image_in),'.jpeg') !== false) {$_ext='jpeg';} 
    elseif (
strpos(strtolower($image_in),'.jpg') !== false) {$_ext='jpeg';} 
    elseif (
strpos(strtolower($image_in),'.gif') !== false) {$_ext='gif';} 
    elseif (
strpos(strtolower($image_in),'.png') !== false) {$_ext='png';} 
    else {
$_ext='';} 
Это жесть!
ahsinis вне форума   Ответить с цитированием
Старый 29.10.2009, 16:34   #10
Специалист
 
Регистрация: 12.04.2007
Сообщений: 178
Вес репутации: 213
sashko - весьма и весьма положительная личностьsashko - весьма и весьма положительная личностьsashko - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от ahsinis Посмотреть сообщение
Это жесть!
ага, особенно если файл обозвать типа 1.jpeg.gif
sashko вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 20:06.