webchemistry / images
Requires
- php: ^7.2
- nette/finder: ^2.5
- nette/http: ^3.0
- nette/utils: ^3.0
- tracy/tracy: ^2.6
Requires (Dev)
- codeception/codeception: ^2.4
- doctrine/orm: ^2.6
- latte/latte: ^2.5
- nette/application: ^3.0
- nette/di: ^3.0
- nette/forms: ^3.0
- nettrine/hydrator: dev-master
- phpstan/phpstan: ^0.11
- webchemistry/testing-helpers: ~2.0
Suggests
- webchemistry/images-s3: To save an image on Amazon
This package is auto-updated.
Last update: 2021-05-20 09:51:49 UTC
README
已弃用
此包将不再开发,最多只修复错误。因此,请使用非常相似的包https://github.com/contributte/imagist,它更加丰富。
安装
Composer
composer require webchemistry/images
config
extensions: images: WebChemistry\Images\DI\ImagesExtension
配置
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
图片路径结构
%wwwDir%/%assetsDir%/namespace/resize/image.png %wwwDir%/%assetsDir%/namespace/original/image.png
namespace/ - 由namespaceResolver类处理 resize/ - 由hashResolver类处理
创建别名
别名允许轻松修改图片
使用单个修饰符
local: aliases: myAlias: "resize:12,50"
多个修饰符
local: aliases: myAlias: "resize:12,50,exact|sharpen"
使用数组
cloudinary: aliases: myAlias: "border:[width: 4, color: #553311]"
使用变量
local: aliases: resizeExact: "resize:$1,$2,exact" resize: "resize:$1,$2,$3" resizeSquare: "resize:$1,$1,exact"
自定义修饰符
在配置中只需要注册loader
local: modifiers: - ModifiersLoader
创建类并添加修饰符
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() }); } }
并使用
local: aliases: custom: "custom:param1"
图片存储
$upload - Nette\Utils\Upload 实例 $location - 存储在字符串中的图片路径 $storage - WebChemistry\Images\IImageStorage 实例
Nette 上传
// 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);
在上传图片之前,我们可以对其进行修改
$resource->setAlias("custom"); // Kombinace více aliasů $resource->setAliases(["custom", "custom2"]); $id = $resource->getId(); // Ziskání id // nebo $id = (string) $resource;
图片将存储在namespace/original/obrazek.jpg
获取图片
$id 从存储的图片中获取的标识符,请参阅存储图片部分
$resource = $storage->createResource($id); $link = $storage->link($resource);
复制图片
$id 从存储的图片中获取的标识符,请参阅存储图片部分
$resource = $storage->createResource($id); $dest = $storage->createResource("namespace/obrazek.jpg"); // Muzeme zmodifikovat $dest->setAlias("custom"); $storage->copy($resource, $dest);
仅复制原始图片,并在必要时对其进行修改。
移动图片
$id 从存储的图片中获取的标识符,请参阅存储图片部分
$resource = $storage->createResource($id); $dest = $storage->createResource("namespace/obrazek.jpg"); // Muzeme zmodifikovat $dest->setAlias("custom"); $storage->move($resource, $dest);
删除图片
$id 从存储的图片中获取的标识符,请参阅存储图片部分
$resource = $storage->createResource($id); $storage->delete($id);
将删除原始图片及其修改版本。
修改图片
$id 从存储的图片中获取的标识符,请参阅存储图片部分
- 通过存储
$resource = $storage->createResource($id); $resource->setAlias("custom"); $storage->save($resource);
存储到namespace/custom/obrazek.jpg
- 通过获取地址
$resource = $storage->createResource($id); $resource->setAlias("custom"); echo $storage->link($resource);
存储到namespace/custom/obrazek.jpg
模板
显示图片
{img 'image.jpg'} <img n:img="'image.jpg'">
使用图片修饰符显示
{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)}
批量处理图片
$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();
表单
扩展将自动注册。使用此组件无需创建图像类。
$form->addImageUpload('image', 'Obrazek') ->setRequired() ->setNamespace('namespace'); $form->onSuccess[] = function ($form, array $values) use ($storage) { $storage->save($values['image']); };
用于预览图片和删除图片的输入
$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 类型
扩展将自动注册。可以通过注解类型 image 创建图片字段。
class Entity { /** * @ORM\Column(type="image") */ protected $image; }
nullable=true 将图片从必填改为非必填
保存新图片,仅接受IFileStorage实例或当Column注解中设置了nullable时接受NULL
$form->onSuccess[] = function ($form, $values) { $en = new Entity(); $en->image = $this->storage->save($values->image); $this->em->persist($en); $this->em->flush(); };
获取图片
$en = $this->em->getRepository(Entity::class)->find(1); if ($en->image !== NULL) { // V pripade nullable $link = $this->storage->link($en->image); }