cesurapp/media-bundle

Symfony 媒体扩展包

安装: 180

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.16 2024-09-01 11:12 UTC

This package is auto-updated.

Last update: 2024-09-01 11:13:59 UTC


README

App Tester Software License

用于跟踪文件。当媒体被删除时,它也会自动从存储中移除。您可以使用相同的媒体与多个表一起使用。您必须为每个列创建一个新的特质。图像文件支持 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);