Ресайз картинок

cybviolence
На сайте с 24.06.2009
Offline
84
754

Есть фотографии 100x500, 200x200, 200x100

CMS Joomla+Virtuemart

Мне требуется преобразовать их всех к 200x200.

Делаю стандартно, получается такая беда : высокая картинка ( 100x500 ) преобразуется неправильно, а именно - само изображение прижато к левому краю, в то время , как 200x200 с изображением в центре.

Что делают в таких случаях? В фотошопе все обрабатывать?

AlexKotLeopold
На сайте с 16.03.2010
Offline
59
#1

начал юзать для таких дел

Light Image Resizer 4...

очень удобная прога, с русским интерфейсом

+ там есть режим "умного кадрирования" делает широкие картинки довольно восприимчевыми при необходимости создания квадратных...

Создание и продвижение сайтов - Promonika.com (http://promonika.com/). Видео портал Ratatu.com (https://ratatu.com/).
H
На сайте с 31.10.2008
Offline
33
#2

раз уж говорить о стороннем софте, то лучше IrfanView ничего пока не встречал - он имеет общирнейший функционал по автоматической обработке изображений. Был и остается бесплатным.

Если по сабжу, то, может имеет смысл у разработчиков полюбопытстовать? на худой конец расковырять исходники.

cybviolence
На сайте с 24.06.2009
Offline
84
#3

За программы спасибо, попробую.

Вообщем хотел, чтобы "на лету" как то все вставало на свои места...

[Удален]
#4

если разбираетесь в php, то:

 $size = getimagesize($pic);

$w=$size[0];
$h=$size[1];
$cf=$h/200; // 200 - нужная высота
$nw=$w/$cf;
$nh=$h/$cf;
function imageresize($outfile,$infile,$neww,$newh,$quality) {
$im=imagecreatefromjpeg($infile);
$im1=imagecreatetruecolor($neww,$newh);
imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,imagesx($im),imagesy($im));
imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}
imageresize($small_pic,$pic,$nw,$nh,40);

от одной из моих работ, имена переменных "говорящие" и интуитивно понятны... для работы скрипта понадобится библиотека GD (она нужна везде для работы php с изображениями)

Ayer
На сайте с 27.05.2011
Offline
33
#5

вот функция есть, может пригодится

function img_resize($src_img, $dest_img, $width, $height, $fill_color=0xFFFFFF, $quality=90) {

if ( !file_exists($src_img) ) return false;
$img_size = getimagesize($src_img);
if ( $img_size === false ) return false;

$img_format = strtolower( substr($img_size['mime'], strpos($img_size['mime'], '/') + 1) );
$func_imgcreatefrom = 'imagecreatefrom'.$img_format;
if ( !function_exists($func_imgcreatefrom) ) return false;

$x_ratio = $width / $img_size[0];
$y_ratio = $height / $img_size[1];

$min_ratio = min($x_ratio, $y_ratio);

$new_width = ( $x_ratio == $min_ratio ? $width : floor($img_size[0] * $min_ratio) );
$new_height = ( $x_ratio != $min_ratio ? $height : floor($img_size[1] * $min_ratio) );
$new_left = ( $x_ratio == $min_ratio ? 0 : floor(($width - $new_width) / 2) );
$new_top = ( $x_ratio != $min_ratio ? 0 : floor(($height - $new_height) / 2) );

$gd_dest_img = imagecreatetruecolor($width, $height);
$gd_src_img = $func_imgcreatefrom($src_img);

imagefill($gd_dest_img, 0, 0, $fill_color);
imagecopyresampled($gd_dest_img, $gd_src_img, $new_left, $new_top, 0, 0, $new_width, $new_height, $img_size[0], $img_size[1]);
imagejpeg($gd_dest_img, $dest_img, $quality);

imagedestroy($gd_dest_img);
imagedestroy($gd_src_img);

return true;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий