[EVO] [Решено] phpthumb вырезать центр рисунка заданных размеров

Здравствуйте! Использую сборку evo от Dmi3y. Для генерации превьюшек использую снипет phpthumb который включен уже в сборку.
Возник следующий вопрос.
Будут большие изображение но размер у всех будет разный (одни будут вертикального другие горизонтального положения).
Из этих больших изображений нужно генерить превьюшку. Размеров исходного изображения уменьшать не нужно, а просто вырезать центр изображения по размеру width=«334» height=«281».
Возможно ли это сделать с phpthumb который включен в сборку и как?
Или нужно воспользоваться какимто другим решением?

17 комментариев

avatar
Добавить в конфигурацию вызова zc_1

Ну или в конфигурацию самого сниппета.
avatar
Пробуй так
<img src="[[phpthumb? &input=`[+image+]` &options=`w_265,h=149,zc=1`]]" alt="[+pagetitle+]" title="[+pagetitle+]" />
Комментарий отредактирован 2013-01-25 13:25:31 пользователем Flexx
avatar
Спасибо за ответ, но это не совсем то что нужно. При таком варианте происходит уменьшение размеров, а потом образается то что лишнее.
Возможно ли именно размеры не уменьшать, а только вырезать по заданным размерам центр?
avatar
fltr[]=crop…
avatar
Вот тут нашел по crop:
phpthumb.sourceforge.net/demo/docs/phpthumb.readme.txt

«crop» (CROP image)
[ex: &fltr[]=crop|left|right|top|bottom]
where is the left number of pixels to crop from the left
side of the resized image; right, top, bottom are for right,
top and bottom respectively. Where (0 < x < 1) the
value will be used as a percentage of width/height.
Left and top crops take precedence over right and
bottom values. Cropping will be limited such that at
least 1 pixel of width and height always remains.

Это работает тут можно обрезать со всех сторон в пикселях или в процентах. Это отлично подошло бы если бы изображения были одного размера. Но проблема в том что изображения могут быть горизонтальные и вертикальные.
Комментарий отредактирован 2013-01-25 16:27:12 пользователем intzar
avatar
Никто не мешает завернуть вызов ресайзера в свой сниппет. Воспользоваться функцией getimagesize() и найти смешение до нужного центра. Затем вызвать сниппет phpthumb с расчитанными параметрами.
avatar
Вот статья
github.com/masterexploder/PHPThumb/wiki/Basic-Usage
Здесь есть такая функция Crop From Center

<?php
require_once 'path/to/ThumbLib.inc.php';
try
{
$thumb = PhpThumbFactory::create('/path/to/image.jpg');
}
catch (Exception $e)
{
// handle error here however you'd like
}
$thumb->cropFromCenter(200, 100);
$thumb->show();

А как можно узнать есть ли подобное в phpthumb который в сборке Дмитрия?
avatar
нужно проверить поидее должна работать
avatar
Скажите, а как можно проверить? Заглянуть в какойто файл?
avatar
нигде не отключал в файлах
avatar
В phpthumbof эту функцию отключили — глючила.
avatar
Скажите ее реально включить? Насколько это сложно?
avatar
Нет. Ищите другие способы. Я с этим столкнулся 3 месяца назад.
avatar
Если не phpthumb то для решения подобной задачи в каком направлении можно посмотреть?
avatar
getimagesize() и imagecreate(). В общем вот ru2.php.net/image самое верное направление)) Ну или можете RezImgCrop валентина допилить. Там ключевой для вас будет строка
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);


А чем вас не устроил вариант с промежуточным сниппетом для расчета цента у картинки?
avatar
Промежуточный снипет устроит. Но к сожалениею моих познаний php не достаточно для написания снипета.

На вариант RezImgCrop уже несколько раз падал взгляд но както не пробывал.

С RezImgCrop полностью решил то что нужно, все получилось без допиливания.
avatar
Всем большое спасибо за помощь!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.