PHPackages                             webchemistry/images - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. webchemistry/images

Abandoned → [contributte/imagist](/?search=contributte%2Fimagist)Library[File &amp; Storage](/categories/file-storage)

webchemistry/images
===================

Image storage for easier uploading, deleting and manipulation.

4.2.0(4y ago)3734.3k20[1 issues](https://github.com/WebChemistry/images/issues)1GPL-3.0PHPPHP ^7.2

Since Feb 8Pushed 3y ago9 watchersCompare

[ Source](https://github.com/WebChemistry/images)[ Packagist](https://packagist.org/packages/webchemistry/images)[ RSS](/packages/webchemistry-images/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (13)Versions (38)Used By (1)

[![Build Status](https://camo.githubusercontent.com/07c90699ef052473b301a524143e783886e6d7b8ca6de265e6b2317c8b60d110/68747470733a2f2f7472617669732d63692e6f72672f5765624368656d69737472792f696d616765732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/WebChemistry/images)

Deprecated
----------

[](#deprecated)

Tento balíček se už dále vyvíjet nebude, budou maximálně opravy chyb. Použijte proto velmi podobný balíček , který je bohatější.

Instalace
---------

[](#instalace)

Composer:

```
composer require webchemistry/images
```

config:

```
extensions:
    images: WebChemistry\Images\DI\ImagesExtension
```

### Konfigurace

[](#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ů

[](#skladba-cesty-k-obrázků)

%wwwDir%/%assetsDir%/namespace/resize/image.png %wwwDir%/%assetsDir%/namespace/original/image.png

namespace/ - Má na starosti třída namespaceResolver resize/ - Má na starosti třída hashResolver

### Tvorba aliasů

[](#tvorba-aliasů)

Aliasy umožnují snadnou modifikací obrazků

**Použití jednoho modifieru**

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

**Více modifierů**

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

**Použití polí**

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

**Použití proměnných**

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

### Vlastní modifiery

[](#vlastní-modifiery)

V konfiguraci stačí zaregistrovat loader

```
local:
    modifiers:
      - ModifiersLoader
```

vytvořit třídu a přidávat modifiery

```
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í

```
local:
    aliases:
      custom: "custom:param1"
```

### Ukladaní obrázků

[](#ukladaní-obrázků)

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

Nette upload

```
// 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

```
$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

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

[](#získávání-obrázků)

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

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

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

### Kopírování obrázků

[](#kopírování-obrázků)

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

```
$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.

### Přesouvání obrázků

[](#přesouvání-obrázků)

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

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

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

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

### Odstranění obrázků

[](#odstranění-obrázků)

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

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

$storage->delete($id);
```

Odstraní se jak originální obrázek, tak i jeho modifikace.

### Modifikace obrázků

[](#modifikace-obrázků)

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

1. Uložením

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

Uloží se do namespace/custom/obrazek.jpg

2. Získáním adresy

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

Uloží se do namespace/custom/obrazek.jpg

Šablony
-------

[](#šablony)

Zobrazení obrázku

```
{img 'image.jpg'}

```

Zobrazení s použitím modifikátorů obrázků

```
{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ů
-----------------

[](#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
---------

[](#formuláře)

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

```
$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ů:

```
$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
------------

[](#doctrine-typ)

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

```
class Entity {

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

}
```

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

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

```
$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

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

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community25

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~63 days

Recently: every ~189 days

Total

37

Last Release

1824d ago

Major Versions

1.0.x-dev → 2.02016-02-04

v2.2.x-dev → 3.0-beta2017-01-31

v3.x-dev → 4.0.02018-06-29

v4.1.x-dev → v5.x-dev2020-01-29

PHP version history (3 changes)v2.2.x-devPHP &gt;= 5.5

4.0.0PHP &gt;= 7.1

4.1.7PHP ^7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/312e788a47a251e05734378921d4596a91819b7de416fa18e77aa69e08798ea8?d=identicon)[Antik](/maintainers/Antik)

---

Top Contributors

[![krekos](https://avatars.githubusercontent.com/u/1011578?v=4)](https://github.com/krekos "krekos (15 commits)")[![tg666](https://avatars.githubusercontent.com/u/24430186?v=4)](https://github.com/tg666 "tg666 (10 commits)")[![MartkCz](https://avatars.githubusercontent.com/u/10145362?v=4)](https://github.com/MartkCz "MartkCz (8 commits)")[![PavelJurasek](https://avatars.githubusercontent.com/u/1270132?v=4)](https://github.com/PavelJurasek "PavelJurasek (2 commits)")[![Ivorius](https://avatars.githubusercontent.com/u/552101?v=4)](https://github.com/Ivorius "Ivorius (2 commits)")[![martenb](https://avatars.githubusercontent.com/u/13311472?v=4)](https://github.com/martenb "martenb (1 commits)")[![elendirx](https://avatars.githubusercontent.com/u/2829620?v=4)](https://github.com/elendirx "elendirx (1 commits)")[![cactucs](https://avatars.githubusercontent.com/u/83794991?v=4)](https://github.com/cactucs "cactucs (1 commits)")[![JanMikes](https://avatars.githubusercontent.com/u/3995003?v=4)](https://github.com/JanMikes "JanMikes (1 commits)")[![chapcz](https://avatars.githubusercontent.com/u/3541306?v=4)](https://github.com/chapcz "chapcz (1 commits)")

---

Tags

storageimages

###  Code Quality

TestsCodeception

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/webchemistry-images/health.svg)

```
[![Health](https://phpackages.com/badges/webchemistry-images/health.svg)](https://phpackages.com/packages/webchemistry-images)
```

###  Alternatives

[league/flysystem

File storage abstraction for PHP

13.6k639.1M2.2k](/packages/league-flysystem)[league/flysystem-aws-s3-v3

AWS S3 filesystem adapter for Flysystem.

1.6k263.6M790](/packages/league-flysystem-aws-s3-v3)[contributte/image-storage

Image storage for Nette framework

28749.3k1](/packages/contributte-image-storage)[league/flysystem-async-aws-s3

AsyncAws S3 filesystem adapter for Flysystem.

2610.5M31](/packages/league-flysystem-async-aws-s3)[ublaboo/image-storage

Image storage for Nette framework

2913.0k](/packages/ublaboo-image-storage)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
