PHPackages                             clear01/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. clear01/images

ActiveLibrary[File &amp; Storage](/categories/file-storage)

clear01/images
==============

Image storage for easier uploading, deleting and manipulation.

5.0.0(6mo ago)08GPL-3.0PHPPHP &gt;= 8.3

Since Feb 8Pushed 6mo agoCompare

[ Source](https://github.com/clear01/images)[ Packagist](https://packagist.org/packages/clear01/images)[ RSS](/packages/clear01-images/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (12)Versions (41)Used By (0)

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

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

47

—

FairBetter than 93% of packages

Maintenance66

Regular maintenance activity

Popularity4

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity90

Battle-tested with a long release history

 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 ~107 days

Recently: every ~591 days

Total

38

Last Release

202d ago

Major Versions

v1.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

2.1.5 → 5.0.02025-12-12

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

4.0.0PHP &gt;= 7.1

4.1.7PHP ^7.2

5.0.0PHP &gt;= 8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/4654a37d044029106ae0e3864278dd691d834fb972e693441e35ccae592c2e28?d=identicon)[clear01](/maintainers/clear01)

---

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)")[![martinknor](https://avatars.githubusercontent.com/u/2004222?v=4)](https://github.com/martinknor "martinknor (4 commits)")[![Ivorius](https://avatars.githubusercontent.com/u/552101?v=4)](https://github.com/Ivorius "Ivorius (2 commits)")[![PavelJurasek](https://avatars.githubusercontent.com/u/1270132?v=4)](https://github.com/PavelJurasek "PavelJurasek (2 commits)")[![martenb](https://avatars.githubusercontent.com/u/13311472?v=4)](https://github.com/martenb "martenb (1 commits)")[![MartkCz](https://avatars.githubusercontent.com/u/10145362?v=4)](https://github.com/MartkCz "MartkCz (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/clear01-images/health.svg)

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

###  Alternatives

[nette/forms

📝 Nette Forms: generating, validating and processing secure forms in PHP. Handy API, fully customizable, server &amp; client side validation and mature design.

54413.6M508](/packages/nette-forms)[nextras/mail-panel

MailPanel is extension for Nette Framework which captures sent e-mails in development mode and shows them in debugger bar.

741.2M4](/packages/nextras-mail-panel)[contributte/image-storage

Image storage for Nette framework

28750.5k1](/packages/contributte-image-storage)[nette/web-project

Nette: Standard Web Project

10993.3k](/packages/nette-web-project)[tomaj/nette-api

Nette api

36273.2k8](/packages/tomaj-nette-api)[ublaboo/image-storage

Image storage for Nette framework

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

PHPackages © 2026

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