В Joomla 3 появились небольшие изменения класса JImage

У класса появилось несколько новых методов для работы с изображениями, и в этой статье я постараюсь их описать!

Перед прочтением этой статьи рекомендуется ознакомиться с классом Jimage который я уже описывал у себя в блоге тут!

Исходное изображение:

Первый метод: cropResize($width, $height, $createNew = true);
Метод обрезает изображение и масштабирует его до указанного размера, вырезается центр изображения.
Этот метод отлично подходит для создания миниатюр изображений.

Пример:

$image = new JImage( JPATH_SITE . '/test.jpg' );
$image->cropResize( 200, 300, false );
$image->toFile(  JPATH_SITE . '/result.jpg' );

Следующий метод который появился:
createThumbs($thumbSizes, $creationMethod = self::SCALE_INSIDE, $thumbsFolder = null)
Этот метод позволит нам создать группу миниатюр из нашего изображения.
Основные параметры которые принимает этот метод:

  • $thumbSizes - массив в котором передаются размеры миниатюр
  • $creationMethod - каким методом масштабировать фотографии
  • $thumbsFolder - папка в которой будут сохранены миниатюры (по умолчанию это /thumbs)

К дополнению к стандартным вариантам масштабирования: SCALE_FILL, SCALE_INSIDE и SCALE_OUTSIDE в этом методе можно использовать еще два варианта:
CROP - обрежет изображение по указанным размерам
CROP_RESIZE - работает та же как и метод cropResize

Пример работы данного метода:

$image = new JImage( JPATH_SITE . '/test.jpg' );
$thumbs = $image->createThumbs( array( '200x200', '100x100' ), JImage::CROP_RESIZE,JPATH_SITE . '/images/thumbs' );

После выполнения этого кода в папке /images/thumbs у нас появится два изображения:

Изображение уменьшенное до 200х200 точек Изображение уменьшенное до 100х100 точек

Метод createThumbs после выполнения вернет массив объектов JImage которыми можно дальше манипулировать как одиночными файлами:

Array
(
    [0] => JImage Object
        (
            [handle:protected] => Resource id #132
            [path:protected] => /thumbs/test_200x200.jpg
        )

    [1] => JImage Object
        (
            [handle:protected] => Resource id #134
            [path:protected] => /thumbs/test_100x100.jpg
        )

)



И последний метод generateThumbs($thumbSizes, $creationMethod = self::SCALE_INSIDE)

Этот метод работает как и метод createThumbs только не сохраняет сразу миниатюры, а возвращает массив объектов которые мы можем видоизменять как нам захочется с помощью класса JImage!
Принимает этот метод всего два параметра и они совпадают с первыми двумя параметрами которые принимает метод createThumbs

Внимание! При указании размеров миниатюр для методов createThumbs и generateThumbs указывайте их от большего размера к меньшему!