Giter Club home page Giter Club logo

sfreplicathumbnailplugin's Introduction

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';
    }

sfreplicathumbnailplugin's People

Contributors

maxim-oleinik avatar pycmam avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.