2017 © Pedro Peláez
 

library images

Image storage for easier uploading, deleting and manipulation.

image

webchemistry/images

Image storage for easier uploading, deleting and manipulation.

  • Wednesday, August 1, 2018
  • by Antik
  • Repository
  • 8 Watchers
  • 33 Stars
  • 6,880 Installations
  • PHP
  • 1 Dependents
  • 1 Suggesters
  • 10 Forks
  • 2 Open issues
  • 24 Versions
  • 4 % Grown

The README.md

Build Status, (*1)

Deprecated

Tento balíček se už dále vyvíjet nebude, budou maximálně opravy chyb. Použijte proto velmi podobný balíček https://github.com/contributte/imagist, který je bohatější., (*2)

Instalace

Composer:, (*3)

composer require webchemistry/images

config:, (*4)

extensions:
    images: WebChemistry\Images\DI\ImagesExtension

Konfigurace

enable: yes
defaultImage: null
wwwDir: %wwwDir%
assetsDir: assets
modifiers: []
aliases: []
hashResolver: WebChemistry\Images\Resolvers\HashResolver ## Vysvětleno níže
namespaceResolver: WebChemistry\Images\Resolvers\NamespaceResolver ## Vysvětleno níže
registerControl: yes ## Zaregistruje UploadControl
registerType: yes ## Zaregistruje doctrine typ 'image' 
safeLink: %productionMode% ## metoda link() se zotavuje z chyb a loguje tyto chyby do tracy, web nespadne do 500 kvůli chybnému obrázku

Skladba cesty k obrázků

%wwwDir%/%assetsDir%/namespace/resize/image.png %wwwDir%/%assetsDir%/namespace/original/image.png, (*5)

namespace/ - Má na starosti třída namespaceResolver resize/ - Má na starosti třída hashResolver, (*6)

Tvorba aliasů

Aliasy umožnují snadnou modifikací obrazků, (*7)

Použití jednoho modifieru, (*8)

local:
    aliases:
      myAlias: "resize:12,50"

Více modifierů, (*9)

local:
    aliases:
      myAlias: "resize:12,50,exact|sharpen"

Použití polí, (*10)

cloudinary:
    aliases:
      myAlias: "border:[width: 4, color: #553311]"

Použití proměnných, (*11)

local:
    aliases:
      resizeExact: "resize:$1,$2,exact"
      resize: "resize:$1,$2,$3"
      resizeSquare: "resize:$1,$1,exact"

Vlastní modifiery

V konfiguraci stačí zaregistrovat loader, (*12)

local:
    modifiers:
      - ModifiersLoader

vytvořit třídu a přidávat modifiery, (*13)

class ModifiersLoader implements WebChemistry\Images\Modifiers\ILoader {

    public function load(WebChemistry\Images\Modifiers\ModifierContainer $modifierContainer) {
        $modifierContainer->addModifier('custom', function (ModifierParam $param, $foo) {
            // zpracovani obrazku $param->getImage()
        });
    }

}

a použití, (*14)

local:
    aliases:
      custom: "custom:param1"

Ukladaní obrázků

$upload - Instance Nette\Utils\Upload $location - Cesta obrázku uložená v řetězci $storage - Instance WebChemistry\Images\IImageStorage, (*15)

Nette upload, (*16)

// vytvorime zdroj pro obrazek
$resource = $storage->createUploadResource($upload);
// nebo z cesty
$resource = $storage->createLocalResource($location);

// pridame namespace
$resource->setNamespace('namespace');

// ulozime
$result = $storage->save($resource);

// zobrazime url adresu
echo $storage->link($result);

Před nahráním obrázku ho můžeme upravit, (*17)

$resource->setAlias("custom");

// Kombinace více aliasů
$resource->setAliases(["custom", "custom2"]);

$id = $resource->getId(); // Ziskání id
// nebo
$id = (string) $resource;

Obrázek se uloží v namespace/original/obrazek.jpg, (*18)

Získávání obrázků

$id Identifikátor ziskány z uloženeho obrázku viz sekce ukládání obrázků, (*19)

$resource = $storage->createResource($id);

$link = $storage->link($resource);

Kopírování obrázků

$id Identifikátor ziskány z uloženeho obrázku viz sekce ukládání obrázků, (*20)

$resource = $storage->createResource($id);
$dest = $storage->createResource("namespace/obrazek.jpg"); 

// Muzeme zmodifikovat
$dest->setAlias("custom");

$storage->copy($resource, $dest);

Zkopíruje se jen originální obrázek a v případně se zmodifikuje., (*21)

Přesouvání obrázků

$id Identifikátor ziskány z uloženeho obrázku viz sekce ukládání obrázků, (*22)

$resource = $storage->createResource($id);
$dest = $storage->createResource("namespace/obrazek.jpg"); 

// Muzeme zmodifikovat
$dest->setAlias("custom");

$storage->move($resource, $dest);

Odstranění obrázků

$id Identifikátor ziskány z uloženeho obrázku viz sekce ukládání obrázků, (*23)

$resource = $storage->createResource($id);

$storage->delete($id);

Odstraní se jak originální obrázek, tak i jeho modifikace., (*24)

Modifikace obrázků

$id Identifikátor ziskány z uloženeho obrázku viz sekce ukládání obrázků, (*25)

1) Uložením, (*26)

$resource = $storage->createResource($id);
$resource->setAlias("custom");
$storage->save($resource);

Uloží se do namespace/custom/obrazek.jpg, (*27)

2) Získáním adresy, (*28)

$resource = $storage->createResource($id);
$resource->setAlias("custom");
echo $storage->link($resource);

Uloží se do namespace/custom/obrazek.jpg, (*29)

Šablony

Zobrazení obrázku, (*30)

{img 'image.jpg'}
<img n:img="'image.jpg'">

Zobrazení s použitím modifikátorů obrázků, (*31)

{img 'image.jpg', custom}
<img n:img="'image.jpg', custom">

{* Kombinace dvou aliasů *}
{img image.jpg, custom, custom1}

{* Použití proměnných v aliasu *}
{img $resource, customVariables(15,15,exact)}

Dávkování obrázků

$batch = $storage->createBatch();

$entity->image = $batch->save($resource);
$this->em->persist($entity);

$entity2->image = $batch->save($resource2);
$this->em->persist($entity2);

$batch->flush();
$this->em->flush();

Formuláře

Automatickou registraci provede extenze. S touto komponentou odpadá povinnost vytvoření třídy pro obrázek., (*32)

$form->addImageUpload('image', 'Obrazek')
    ->setRequired()
    ->setNamespace('namespace');

$form->onSuccess[] = function ($form, array $values) use ($storage) {
    $storage->save($values['image']);
};    

Pro náhledový obrázek a input pro odstranění obrázků:, (*33)

$form->addImageUpload('image', 'Obrázek')
    ->setDelete('Odstranit obrázek')
    ->setNamespace('namespace');

$form->onSuccess[] = function ($form, array $values) use ($storage) {
    $image = $values['image'];
    if ($image->getDelete()) {
        $storage->delete($image->getDelete());
    }
    if ($image->getUpload()) {
        $resource = $storage->save($image->getUpload());
    } else {
        $resource = $image->getDefaultValue();
    }
};

Doctrine typ

Automatickou registraci provede extenze. Položku pro obrázek lze vytvořit přes anotaci typ image:, (*34)

class Entity {

    /**
     * @ORM\Column(type="image")
     */
    protected $image;

}

nullable=true změna obrázku z povinného na nepovinný, (*35)

Uložení nového obrázku, bere jen instaci IFileStorage nebo NULL v případě nastaveného nullable v anotaci Column, (*36)

$form->onSuccess[] = function ($form, $values) {
    $en = new Entity();
    $en->image = $this->storage->save($values->image);

    $this->em->persist($en);
    $this->em->flush();
};

Získání obrázku, (*37)

$en = $this->em->getRepository(Entity::class)->find(1);
if ($en->image !== NULL) { // V pripade nullable
    $link = $this->storage->link($en->image);
}

The Versions

31/01 2017

3.0-beta

3.0.0.0-beta

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

09/08 2016

v2.2.x-dev

2.2.9999999.9999999-dev

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

02/07 2016

v2.1.x-dev

2.1.9999999.9999999-dev

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

02/07 2016

2.1.4

2.1.4.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

30/06 2016

2.1.3

2.1.3.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

29/06 2016

2.1.2

2.1.2.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

05/03 2016

2.1.1

2.1.1.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

22/02 2016

2.1

2.1.0.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

The Requires

 

The Development Requires

by Avatar Antik

storage images

04/02 2016

2.0

2.0.0.0

Image storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

storage images

18/01 2016

1.0.x-dev

1.0.9999999.9999999-dev

Images storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

01/08 2015

1.4.3

1.4.3.0

Images storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

30/06 2015

1.4.2

1.4.2.0

Images storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

05/06 2015

1.4.1

1.4.1.0

Images storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

29/05 2015

1.4

1.4.0.0

Images storage for easier uploading, deleting and manipulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

14/03 2015

1.3

1.3.0.0

Images storage for easily uploading, deleting and manilpulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

09/02 2015

1.2.1

1.2.1.0

Images storage for easily uploading, deleting and manilpulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

09/02 2015

1.2

1.2.0.0

Images storage for easily uploading, deleting and manilpulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

08/02 2015

1.1

1.1.0.0

Images storage for easily uploading, deleting and manilpulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images

08/02 2015

1.0

1.0.0.0

Images storage for easily uploading, deleting and manilpulation.

  Sources   Download

GPL-3.0

by Avatar Antik

responsive storage images