CI resize проблема

12
IL
На сайте с 20.04.2007
Offline
435
#11
Ms-Dred:
я просто не врублю как срезать справа 25

Занятный диалог получается..

Ширину указать?

p.s. рекомендую "асилить" ман-страничку.. она правда не такая большая.
p.p.s. к следующему вопросу по сабжу просьба код прилагать..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Станислав
На сайте с 27.12.2009
Offline
249
#12

        $config['image_library']    = 'gd2';

$config['source_image'] = $source;
$config['new_image'] = $path;
$config['create_thumb'] = false;
$config['maintain_ratio'] = true;
$config['master_dim'] = $master_dim;
$config['width'] = $width;
$config['height'] = $height;

$this->load->library('image_lib', $config);

if ( ! $this->image_lib->resize())
{
return $this->image_lib->display_errors();
}

$this->image_lib->clear();

if( ! $this->config->item('ImageMagick'))
{
return $source_size;

}
$image = getimagesize($source_size);
$w_img = $image[0] - $width;
$h_img = $image[1] - $height;

// Сколько еще необходимо обрезать
$x_axis = $w_img > 0 ? $w_img : 0; // получаем 50px
$y_axis = $h_img > 0 ? $h_img : 0;

$config['image_library'] = 'ImageMagick';
$config['library_path'] = $this->config->item('ImageMagick');
$config['source_image'] = $source_size;
$config['x_axis'] = $x_axis; // 50
$config['y_axis'] = $y_axis; // 0

$this->image_lib->initialize($config);

if ( ! $this->image_lib->crop())
{
return $this->image_lib->display_errors();
}

режу слева 50px, нуна 25 слева и 25 справа

пойду в мауле почитаю, но я вроде там не видел этого.

Мы там, где рады нас видеть.
bay_ebook
На сайте с 28.05.2010
Offline
111
#13

Ладно, объясню принцип

есть картинка скажем 100px в ширину

Нужно сделать 50px, причем вырезать по центру, то есть отрезать 25 слева и 25 справа.

Пишем

$config['width'] = 50; (максимум картинка)

$config['x_axis'] = 25; (откуда начинать, то есть с 25 пикселя слева)

Тоже самое для высоты.

А ,что бы библиотека не учитывала базовые соотношения ,дописываем

$config['maintain_ratio'] = FALSE; (максимум картинка)

Вроде все.

ПС - я это делать только для gd2, для остальных библиотек не пробовал.

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
Станислав
На сайте с 27.12.2009
Offline
249
#14

видать я что то жестко не понимаю )))

в мауле

x_axis Устанавливает координату X в пикселях для обрезки изображений. Например, установка в 30 обрежет изображение на 30 пикселей слева.

Я понимаю это так, если установили 30px значил слева срежет 30px.

Или все же я не прав? И она уже заведомо учитывает размер картинки и если 30px стоит, то она режет по 15px с каждой стороны...

bay_ebook
На сайте с 28.05.2010
Offline
111
#15
Ms-Dred:
видать я что то жестко не понимаю )))
в мауле

Я понимаю это так, если установили 30px значил слева срежет 30px.
Или все же я не прав? И она уже заведомо учитывает размер картинки и если 30px стоит, то она режет по 15px с каждой стороны...

неправильно понимаете.

x_axis устанавливает отступ слева. Скажем 15

Потом указываем ширину скажем 30

Итого, если у нас 60 пискелел базовая картинка, от скрипт вырежет 30 пикселей по центру. (слева отступит 15, вырежет 30 и справа все, что останется упустит)

А если вы заведомо не знаете, сколько нужно по бокам оттяпать - getimagesize в помощь :)

Примерно так:

1) узнаем базовую ширину, скажем она 100 (getimagesize - индекс 0 в отдаваемом массиве)

2) Указываем, что нам нужно 55px ширины

3) 100 - 55 = 45

4) x_axis = 45 / 2

И получаем вырезанную по центру картинку

Станислав
На сайте с 27.12.2009
Offline
249
#16
bay_ebook:
неправильно понимаете.

☝ вот оно, значит у меня все правильно режет, как надо.

размеры да я не знаю, узнаю их как раз токи

ms-dred:

~~~~~
$image = getimagesize($source_size);
~~~~~~

спасибо.

Станислав
На сайте с 27.12.2009
Offline
249
#17

bay_ebook, все же вы не правы )

Сейчас протестировал и понял что режет только с одной стороны.

Взял пример изображения размером 1920x1080

Скриптом сжал картинку по высоте до 350px, получил ширину 622, затем прогнал через crop для получения размера 500х350, отрезал кусок ширины в 122px, затем побежал в фотошоп для эксперимента.

Взял тот же оригинальный размер 1920x1080, сжал ее по высоте, обрезал с двух сторон по ширине (слева 61px и справа 61px).

На выходе получил другое изображение, отличное от cropa. Т.е. crop режет изображение именно слева, а не рассчитывает соотношение сторон для обрезки изображения относительно ее центра.

Вобщем вопрос открыт ( Как же все таки заставить crop резать слева и справа, а не с одной стороны.

IL
На сайте с 20.04.2007
Offline
435
#18
Ms-Dred:
Вобщем вопрос открыт ( Как же все таки заставить crop резать слева и справа, а не с одной стороны.

Включить мозг.. на второй странице уже.

1. указать x_axis = 1/2 от того, что нужно обрезать

2. указать width = ширину того, что нужно получить.

Т.е.

Скриптом сжал картинку по высоте до 350px, получил ширину 622, затем прогнал через crop для получения размера 500х350, отрезал кусок ширины в 122px, затем побежал в фотошоп для эксперимента.

['x_axis'] = 122/2;
['width'] = 500;
bay_ebook
На сайте с 28.05.2010
Offline
111
#19
Ms-Dred:
bay_ebook, все же вы не правы )
Сейчас протестировал и понял что режет только с одной стороны.
Взял пример изображения размером 1920x1080
Скриптом сжал картинку по высоте до 350px, получил ширину 622, затем прогнал через crop для получения размера 500х350, отрезал кусок ширины в 122px, затем побежал в фотошоп для эксперимента.
Взял тот же оригинальный размер 1920x1080, сжал ее по высоте, обрезал с двух сторон по ширине (слева 61px и справа 61px).
На выходе получил другое изображение, отличное от cropa. Т.е. crop режет изображение именно слева, а не рассчитывает соотношение сторон для обрезки изображения относительно ее центра.

Вобщем вопрос открыт ( Как же все таки заставить crop резать слева и справа, а не с одной стороны.

Вы бы внимательно причитали, то, что я написал, а ivan-lev вам уже даже картинкой разрисовал.

Повторюсь -хотите обрезать по сторонам, отнимите от базовой ширины нужную, остаток разделите на два и будет вам то,что нужно. Куда еще проще :)

12

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