вот для примера фото до (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 );
?>