cesurapp / media-bundle
Symfony 媒体扩展包
1.0.16
2024-09-01 11:12 UTC
Requires
- php: >=8.2
- ext-fileinfo: *
- ext-imagick: *
- cesurapp/storage-bundle: ^1.0
- doctrine/doctrine-bundle: ^2.10
- doctrine/orm: ^2.15
- symfony/console: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/http-kernel: ^7.0
- symfony/mime: ^7.0
- symfony/uid: ^7.0
Requires (Dev)
- php-cs-fixer/shim: ^3.40
- phpstan/phpstan: ^1.10
- symfony/test-pack: ^1.1
- zenstruck/foundry: ^2.0
README
用于跟踪文件。当媒体被删除时,它也会自动从存储中移除。您可以使用相同的媒体与多个表一起使用。您必须为每个列创建一个新的特质。图像文件支持 Imagick 压缩、缩放和转换。
安装
需要 Symfony 7
composer req cesurapp/media-bundle
命令
bin/console media:status # View Media Storage Details
创建媒体列
注意:将 "MediaTrait" 复制到新列。
use \Cesurapp\MediaBundle\Entity\MediaInterface; use \Cesurapp\MediaBundle\Entity\MediaTrait; class UserEntity implements MediaInterface { use MediaTrait; /** * For a single column, this is not necessary. */ //public function getMediaColumns(): array { // return ['media']; //} }
上传图片
use \Cesurapp\MediaBundle\Manager\MediaManager; class ExampleController { public function index(Request $request, MediaManager $manager): void { $images = $manager ->setImageCompress(true) // Enable Image Compressor ->setImageConvertJPG(true) // PNG to JPG Convertor ->setImageQuality(75) // Default Image Quality ->setImageSize(1024,768) // Maximum Image Size //->uploadFile($request) // HTTP File Upload //->uploadBase64($request, ['base64DataKey'], ['base64DataKey' => ['image/png']]) // Json Base64 Image Upload ->uploadLink($request, ['imageLinkKey'], ['imageLinkKey' => ['image/png']]) // Image Link Upload } }
Imagick 辅助工具
压缩 JPG
\Cesurapp\MediaBundle\Compressor\Image::create(file_get_contents('image.jpg'))->save('save_path.jpg', 'jpg', 75);
转换并压缩为 JPG
\Cesurapp\MediaBundle\Compressor\Image::create(file_get_contents('image.png'))->save('save_path.jpg', 'jpg', 75);
调整宽高比并转换 JPG
\Cesurapp\MediaBundle\Compressor\Image::create(file_get_contents('image.png'))->resize(100, 100)->output('jpg', 75);