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, время: 18:44. |