perfect resize images
Вопрос конечно не по js - но я так и не нашел ответа поэтому может вы знаете
качественный ресайзер для картинок не знаете? Я перепробовал кучу библиотек для php они все одинаковые - но вот у вконтакте или у фейсбук ресайзеры отличные - что у них за ресайзеры? мой сайт располагается так то на php еще интересует модуль для улучшении качества фоток |
ImageMagick пробовал? По-моему у nic.ru в хостинге есть выбор между этой библиотекой и gd.
|
imagemagick пробовал gd стоит - на php не предлагать там язык не тянет сделать лучше, нужен специальный ресайзер
|
Цитата:
|
смотрите в сторону
imagecopyresampled примерно так работает, ресайзит с идеальным качеством: $src = imagecreatefromfile( $full_name ); $dest = imagecreatetruecolor( $new_width, $new_height ); imagecopyresampled( $dest, $src, 0, 0, 0, 0, $new_width, $new_height, imagesx( $src ), imagesy( $src ) );далее $dest сохраняете в файл или еще куда. |
забыл функцию кинуть:
function imagecreatefromfile( $filename ) { $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) ); switch( $ext ) { case "jpg": case "jpeg": $src = imagecreatefromjpeg( $filename ); break; case "png": $src = imagecreatefrompng( $filename ); break; case "gif": $src = imagecreatefromgif( $filename ); break; case "bmp": $src = imagecreatefromwbmp( $filename ); break; default: $src = null; } return $src; } |
Цитата:
|
Цитата:
|
вот для примера фото до (738 x 800):
<img src="http://img-fotki.yandex.ru/get/5311/91024863.1ff/0_bdb51_9c6aa77d_XL" /> а теперь фото после (400 x 433): <img src="http://s011.radikal.ru/i315/1208/ac/21f82b08a583.png" /> код выглядит так: <?php function imagecreatefromfile( $filename ) { $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) ); switch( $ext ) { case "jpg": case "jpeg": $src = imagecreatefromjpeg( $filename ); break; case "png": $src = imagecreatefrompng( $filename ); break; case "gif": $src = imagecreatefromgif( $filename ); break; case "bmp": $src = imagecreatefromwbmp( $filename ); break; default: $src = null; } return $src; } // открываем файл $src = imagecreatefromfile( "before.png" ); // установим новый размер ширины картинки $img_width = 400; // тут высоту подгоним под ширину, сохраняя пропорции if ( imagesx( $src ) > imagesy( $src ) ) { $new_width = $img_width; $new_height = $img_width / ( imagesx( $src ) / imagesy( $src ) ); } else { $new_width = $img_width; $new_height = imagesy( $src ) / ( imagesx( $src ) / $img_width ); } // создаем новый экземляр картинки $dest = imagecreatetruecolor( $new_width, $new_height ); // параметры для картинок gif и png для сохранения альфа канала // если меняем картинку не png и не gif эти параметры не нужны imagecolortransparent( $dest, imagecolorallocatealpha( $dest, 0, 0, 0, 127 ) ); imagealphablending( $dest, false ); imagesavealpha( $dest, true ); // ------------------------------------------------------------ // ресамплим imagecopyresampled( $dest, $src, 0, 0, 0, 0, $new_width, $new_height, imagesx( $src ), imagesy( $src ) ); // выводим в браузер header( "Content-Type: image/png;" ); Imagepng( $dest ); ?> |
вот я залил к себе, можешь потестить выставляя разные размеры:
100 - http://spb-piksel.ru/test/?w=100 200 - http://spb-piksel.ru/test/?w=200 300 - http://spb-piksel.ru/test/?w=300 1000 - http://spb-piksel.ru/test/?w=1000 ну или свои размеры |
Часовой пояс GMT +3, время: 20:55. |