digitaldream / photo
图片管理器
4.2.0
2024-04-14 08:33 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.8.1
- intervention/image: ^3.5
- jenssegers/imagehash: ^0.4.2
- laravel/framework: ^10.0|^11.0
Suggests
- ext-curl: *
- ext-exif: *
- dev-master
- 4.2.0
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.0.1
- 2.0.0
- 1.1.0
- 1.0.0
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-6.5.3
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-1.4.2
- dev-dependabot/npm_and_yarn/minimatch-3.1.2
- dev-dependabot/npm_and_yarn/terser-4.8.1
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/minimist-1.2.6
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-analysis-rdg2gg
- dev-api
This package is auto-updated.
Last update: 2024-09-18 12:50:24 UTC
README
Laravel 图片管理器
安装
第一步
composer require digitaldream/photo
第二步 运行迁移
php artisan migrate
第三步
php artisan vendor:publish --provider="Photo/PhotoServiceProvider"
它将发布配置和视图文件。请根据项目需求自由编辑这些文件。
第四步
浏览 /photo/photos 以开始使用此库
配置策略
您可以配置谁可以在此图片库上拥有什么权限。创建一个新的类,并从 Photo\Policies\PhotoPolicy 继承,如下所示。
namespace App\Policies; use Photo\Policies\PhotoPolicy as Policy; class PhotoPolicy extends Policy { /** * @param \App\Models\User $user * * @return bool */ public function viewAny($user): bool { return $user->isTeacher(); } }
如你所见,我们覆盖了 viewAny 方法。现在教师可以查看所有照片的列表。其他方法如 before、view、create、update、delete 也可以被覆盖。现在,为了注册此策略类,让我们更改 config/photo.php 中的 policy 键。
#file config/photo.php
'policy' => \App\Policies\PhotoPolicy::class,
特性
1. 从网络拖放。
2. 从本地计算机拖放
3. 裁剪和调整大小
4. Webp 转换
5. 复制图像 URL 并在网络上分享
7. 大小可配置和缩略图生成
8. SEO 友好型文件名。
9. 翻译
如何在模型中作为 BelongsTo 使用
首先,您需要在模型迁移中添加一行,例如 posts。
$table->foreign('photo_id')->references('id')->on('photo_photos')->onDelete('set null');
其次,您需要在模型中定义关系。
/** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function photo() { return $this->belongsTo(\Photo\Models\Photo::class, 'photo_id'); }
第三。让我们在控制器中制作上传。
/** * @var \Photo\Repositories\PhotoRepository */ protected $photoRepository; public function __construct(PhotoRepository $photoRepository) { $this->photoRepository = $photoRepository; } public function store(StoreRequest $request) { //Your other code. $post->photo_id = $this->photoRepository->create($file, ['caption' => $data['title']])->id; }
您必须通过 __construction 依赖注入解决 \Photo\Repositories\PhotoRepository。
最后。是时候将图像渲染到视图中了。
{!! $post->photo->renderThumbnails() !!}
这将渲染以下 HTML 代码。
<picture> <source type="image/webp" srcset="https://YourSite.com/storage/posts/thumbnails/nice-quietly-their-belong-place-on-it-the-appeared-to.webp"> <img src="https://YourSite.com/storage/posts/thumbnails/nice-quietly-their-belong-place-on-it-the-appeared-to.jpeg" alt="Nice, quietly their belong, place on. It the appeared to"> </picture>
上面的代码将在 webp 和上传扩展中渲染缩略图。要渲染更大的图像,请执行以下操作
{!! $post->photo->render('card-img-top') !!}
这里 render 方法将类名作为第一个参数,将样式作为第二个参数。
如何上传文件并仅获取文件路径。
namesapce App\Repositories; class PostRepository { /** * @var \Photo\Services\PhotoService */ protected PhotoService $photoService; public function __construct(PhotoService $photoService) { $this->photoService = $photoService; } public function store(Request $request) { $post = new Post(); $post->fill($request->all()); $mainImageFolder = "posts" $thumbnailWidth = 220; $thumbnailHheight= 200; $crop="no"; // "yes" will resize image automatically based on your maximum height,width. $thumbnailPath = "thumbnails"; // Thumbnails path are relative to main Image folder. //In this case it will create a folder thumbnails under posts folder. $post->image = $this->photoService ->setDimension($thumbnailWidth, $thumbnailHheight, $thumbnailPath) ->store($mainImageFolder, $request->file('file'), $post->title, $crop) ->convert() ->getStoredImagePath(); $post->save(); } }