Обрезание картинок

123 4
S
На сайте с 15.12.2009
Offline
67
1840

Здравствуйте, столкнулся с проблемой обрезания картинки.

Функция обрезает нормально изображения которые узкие, а если широкоформатные то оставляет по бокам черные полосы. Вот пример:

исходное изображение(1920х1600): http://s58.radikal.ru/i160/1007/dd/46b48992d5b2.jpg

обрезанное(1280х720): http://s56.radikal.ru/i153/1007/cd/27c01e6fd0ef.jpg

хотя 2е изобрежение меньшн по ширине за 1е, но проблема с соотношением.

прошу помочь решить проблему, спасибо.

cropImage(225, 165, '/path/to/source/image.jpg', 'jpg', '/path/to/dest/image.jpg');


function cropImage($nw, $nh, $source, $stype, $dest) {

$size = getimagesize($source);
$w = $size[0];
$h = $size[1];

switch($stype) {
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}

$dimg = imagecreatetruecolor($nw, $nh);

$wm = $w/$nw;
$hm = $h/$nh;

$h_height = $nh/2;
$w_height = $nw/2;

if($w> $h) {

$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;

imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

} elseif(($w <$h) || ($w == $h)) {

$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;

imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

} else {
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
}

imagejpeg($dimg,$dest,100);
}
[Удален]
#1

speen, блин, я вот этот кусок кода прямо ненавижу.

используйте правильные подходы

http://ru.php.net/manual/en/function.imagick-cropthumbnailimage.php

http://ru.php.net/manual/en/function.imagick-thumbnailimage.php

S
На сайте с 15.12.2009
Offline
67
#2

Все еще актуально, помогите пожалуйтса!

[Удален]
#3

speen, а пчитать документация по приведеным мной функциям и переписать ваше гавно в 3 строчки запрещает кто? мозг? проще поклянчить?

skAmZ
На сайте с 04.09.2009
Offline
122
#4

bearman, про хостинг не думал?) Найти/установить/включить IMagick отдельный гемор.

1:


function cropImage($nw, $nh, $source, $stype, $dest) {

$size = getimagesize($source);
$w = $size[0];
$h = $size[1];

switch($stype) {
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}
$dimg = imagecreatetruecolor($nw, $nh);
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
imagejpeg($dimg,$dest,100);
}

2:


function cropImage($nw, $nh, $source, $stype, $dest) {

$size = getimagesize($source);
$w = $size[0];
$h = $size[1];

switch($stype) {
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}
$wm = $w/$nw;
$hm = $h/$nh;
if($w> $h) {
$adjusted_width = $w / $hm;
$nw=$adjusted_width;
} elseif(($w <$h) || ($w == $h)) {
$adjusted_height = $h / $wm;
$nh=$adjusted_height;
}
$dimg = imagecreatetruecolor($nw, $nh);
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
imagejpeg($dimg,$dest,100);
}
[Удален]
#5
skAmZ:
bearman, про хостинг не думал?) Найти/установить/включить IMagick отдельный гемор.

все бы вам отмазываться хостингом в своей лени. написать yum install imagick / aptitude install imagick куда проще, нежели править код, вам так не кажется?

skAmZ
На сайте с 04.09.2009
Offline
122
#6

bearman, кому как не вам должно быть все равно что писать и как писать?)

bearman:
все бы вам отмазываться хостингом в своей лени. написать yum install imagick / aptitude install imagick куда проще, нежели править код, вам так не кажется?

Лень двигатель прогресса.

[Удален]
#7
skAmZ:
Лень двигатель прогресса.

в вашем понимании той ситуации - "лень" - переписать код проще 1 команды на сервере? я за 1 команду, тем более что фоточки поприятнее получаются и код красивее

skAmZ
На сайте с 04.09.2009
Offline
122
#8

А теперь представьте, что слово ssh первый раз слышите, знать не знаете что сие. А команды типа «yum install imagick / aptitude install imagick» вообще слова матерные.

Что вам будет проще?

[Удален]
#9
skAmZ:
Что вам будет проще?

нанять вас например :)

skAmZ
На сайте с 04.09.2009
Offline
122
#10

win :) ......

123 4

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