Skip to content

pycmam/sfReplicaThumbnailPlugin

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sfReplicaThumbnail
====================================

Плагин предназначен для создания превью изображений.
Основное отличие от других плагинов - автоматическое кеширование полученных результатов
и удобное управление через app.yml

Плагин интегрирует библитеку Replica в symfony и по сути представляет собой хелпер
для создания превью.
Для более подробной информации см. plugins/sfReplicaThumbnailPlugin/lib/vendor/Replica/README


Установка
---------

 * Download
    Сохраните файлы в директории проекта plugins/

 * Установка из Git-репозитария:
    cd /my/project/dir
    git clone git://github.com/maxim-oleinik/sfReplicaThumbnailPlugin.git plugins/sfReplicaThumbnailPlugin
    cd plugins/sfReplicaThumbnailPlugin
    git submodule update --init

 * Установка как submodule для Git-репозитария:
    cd /my/project/dir
    git submodule add git://github.com/maxim-oleinik/sfReplicaThumbnailPlugin.git plugins/sfReplicaThumbnailPlugin
    cd plugins/sfReplicaThumbnailPlugin
    git submodule update --init

 * Запуск тестов:
    cd plugins/sfReplicaThumbnailPlugin
    phpunit test/AllTests.php



Настройка
---------

 * ProjectConfiguration
    $this->enablePlugins(..., 'sfReplicaThumbnailPlugin');

 * app.yml
    [yml]
    all:

      thumbnail:
        # Директория для кеширования превью (от sf_web_dir)
        dir: /uploads/thumbnails

        # Типы превью
        types:
          product_thumb:
            default: /images/default/product_thumb.png
              # Заглушка, если нет исходного изображения.
              # Например, когда $productRecord->getImagePath() вернет NULL
              # По-умолчанию: null (хелпер вернет пустую строку)

            required: true
              # Не проглатывать исключения, если исходное изображение не удалось загрузить.
              # В противном случает хелпер вернет пустую строку. Сделано для того,
              # чтобы не ломать сайт исключением, если исходник потерялся.
              # Можно использовать для отладки.
              # По-умолчанию: false

            mimetype: image/png
              # Тип результирующего файла
              # - image/png
              # - image/gif
              # - image/jpeg
              # По-умолчанию: image/png

            quality: 50
              # Итоговое качество картинки (сжатие). От 0 до 100
              # 0 - максимальное сжатие, минимальное качество
              # По-умолчанию:
              #   PNG:  0   - максимальное сжатие
              #   JPEG: 100 - минимальное сжатие
              #   GIF:      - не используется

            macro:
              Replica_Macro_ThumbnailFixed: [40, 40, center, center]
                # Сжать пропорционально по любой стороне так,
                # чтобы полностью соответствовать указанным размерам.
                # Если после сжатия изображение больше по одной из сторон, например 40x60,
                # тогда вырезать центральный квадрат 40x40
                #
                # Replica_Macro_ThumbnailFixed: [width, heigth, left|center|right, top|center|bottom]

          product_preview:
            mimetype: image/jpeg
            macro:
              Replica_Macro_ThumbnailFit: [600, 600]
                # Сжать пропрорциоально по любой строне так, чтобы итоговое изображение
                # не превышало указанные размеры

          product_origin:
            macro:
              Replica_Macro_Null: []
              # Ничего не делает, возвращает копию оригинала.
              # Можно использовать для кеширования на диск оригинальных изображений из БД.

          product_preview_with_logo:
            macro:
              Replica_Macro_ThumbnailFit: [600, 600]
              Replica_Macro_Overlay: [-10, -10, %SF_WEB_DIR%/images/logo.png]
              # Сжать изображение и наложить логотип в правом нижнем углу со смещением 10px

    Подробное описание `macro` можно получить здесь:
    plugins/sfReplicaThumbnailPlugin/lib/vendor/Replica/README



Использование
-------------

Использование в шаблонах

    [php]
    use_helper('Replica');

    echo thumbnail('product_preview', new Replica_ImageProxy_FromFile($article->getImagePath()));
    // <img src="..." />


Если изображение хранится в БД, тогда можно написать свой класс на основе Replica_ImageProxy_Abstract.
Для Doctrine можно использовать sfReplicaImageDoctrine:

    [php]
    echo thumbnail('product_preview', new sfReplicaImageDoctrine($articleImage));
    // или
    echo thumbnail('product_preview', new sfReplicaImageDoctrine('ArticleImage', $articleImage->getId()));


sfReplicaImageDoctrine предполагает, что изображение хранится в поле `bin`, например:

    [yml]
    ArticleImage:
      columns:
        width:  { type: integer(2), notnull: true, unsigned: true }
        height: { type: integer(2), notnull: true, unsigned: true }
        size:   { type: integer(4), notnull: true, unsigned: true }
        type:   { type: string(16), notnull: true }
        bin:    { type: blob,       notnull: true }

В противном случае можно указать свое поле:

    [php]
    class myReplicaImageProxyDoctrine extends sfReplicaImageDoctrine
    {
        protected $_field = 'file';
    }

About

Thumbnail plugin for Symfony Framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%