Библиотека по работе с изображениями и файлами
Добавлено: 2019.07.30, 02:19
Здравствуйте! Хотелось бы уточнить как будет реализована эта библиотека по работе с файлами и изображениями на Yii3?
Из коробки на Yii2 (yii\imagine\Image) решала достаточно много функций. Там было всё необходимое. Однако всегда не хватало каких-то мелочей по работе с файлами и изображениями. А так как люди на Yii2 не привыкли всё разносить по сервисам, то получался адский код по работе с изображениями в Контроллере. Было бы не плохо более гибче подойти в этом вопросе.
1. Если изображение нужно загрузить в нескольких форматах (превью, 200x200 ...), то приходилось как-то придумывать по динамическому созданию пути (имени файла) и так же его выводу... Это создавало бардак у многих.
2. Невозможно перегенерировать изображения. Иногда сталкиваемся с такой проблемой, что приходится менять размены изображения. Например, поменялась верстка. И теперь на нужно вместо изображения 200х200 изображение 300х300. Или нужно новое 500Х500. И нам приходится писать ещё один костыль по переформатированию изображения или созданию нового. При этом хорошо, если оригинал мы сохранили. А большинство обрезают оригинал... Или же при обращении этого размера не оказалось, тогда генерируется новое из оригинала при запросе.
В этом пункте было бы не плохо иметь базовую заглушку при отсутствии даже оригинала.
3. Структура подкаталогов: 1/2/3/4/5/0/0/0/0/0
4. Замена, удаление файла при изменении, удалении данных из базы.
Одно из хороших расширений решающих эти проблемы на Yii2 было https://github.com/yii-dream-team/yii2-upload-behavior Где в поведении можно было просто реализовать несколько копий в папке. Перегенерировать превью и так далее
Конечно, к этому всему было бы очень не плохо реализовать CROP на JS, как дополнение используя готовую библиотеку. Но знаю, что это уже за пределами PHP фреймворка. Но было бы прекрасно)
5. Касается работы именно с файлами. Не хватало всегда отдачи массовой отдачи файлов пользователю в архиве.
Если у кого-то тоже есть какие-то пожелания из опыта предлагаю писать их здесь)
Из коробки на Yii2 (yii\imagine\Image) решала достаточно много функций. Там было всё необходимое. Однако всегда не хватало каких-то мелочей по работе с файлами и изображениями. А так как люди на Yii2 не привыкли всё разносить по сервисам, то получался адский код по работе с изображениями в Контроллере. Было бы не плохо более гибче подойти в этом вопросе.
1. Если изображение нужно загрузить в нескольких форматах (превью, 200x200 ...), то приходилось как-то придумывать по динамическому созданию пути (имени файла) и так же его выводу... Это создавало бардак у многих.
2. Невозможно перегенерировать изображения. Иногда сталкиваемся с такой проблемой, что приходится менять размены изображения. Например, поменялась верстка. И теперь на нужно вместо изображения 200х200 изображение 300х300. Или нужно новое 500Х500. И нам приходится писать ещё один костыль по переформатированию изображения или созданию нового. При этом хорошо, если оригинал мы сохранили. А большинство обрезают оригинал... Или же при обращении этого размера не оказалось, тогда генерируется новое из оригинала при запросе.
В этом пункте было бы не плохо иметь базовую заглушку при отсутствии даже оригинала.
3. Структура подкаталогов: 1/2/3/4/5/0/0/0/0/0
4. Замена, удаление файла при изменении, удалении данных из базы.
Одно из хороших расширений решающих эти проблемы на Yii2 было https://github.com/yii-dream-team/yii2-upload-behavior Где в поведении можно было просто реализовать несколько копий в папке. Перегенерировать превью и так далее
Код: Выделить всё
public function behaviors()
{
return [
[
'class' => '\yiidreamteam\upload\ImageUploadBehavior',
'attribute' => 'imageUpload',
'thumbs' => [
'thumb' => ['width' => 400, 'height' => 300],
],
'filePath' => '@webroot/images/[[pk]].[[extension]]',
'fileUrl' => '/images/[[pk]].[[extension]]',
'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
'thumbUrl' => '/images/[[profile]]_[[pk]].[[extension]]',
],
];
}
5. Касается работы именно с файлами. Не хватало всегда отдачи массовой отдачи файлов пользователю в архиве.
Если у кого-то тоже есть какие-то пожелания из опыта предлагаю писать их здесь)