Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Laravel Photo Manager

License

NotificationsYou must be signed in to change notification settings

digitaldreams/photo

Repository files navigation

Laravel Photo Manager

Installation

Step one

 composerrequire digitaldream/photo

Step TwoRun Migration

 php artisan migrate

Step Three

 php artisan vendor:publish --provider="Photo/PhotoServiceProvider"

It will publish config, views file. Feel free to edit these files according to your project need.

Step Four

Browse/photo/photos to start using this library

Configure Policy

You can configure who can have what permissions on this photo library.Create a new class and extends it fromPhoto\Policies\PhotoPolicy like below.

namespaceApp\Policies;usePhoto\Policies\PhotoPolicyasPolicy;class PhotoPolicyextends Policy  {/**       * @param \App\Models\User $user       *       * @return bool       */publicfunctionviewAny($user):bool      {return$user->isTeacher();      }  }

As you can see we override viewAny method. Now a Teacher can view list of all photos.Other methods likebefore,view,create,update,delete can be override too.Now to register this Policy class lets changepolicy key onconfig/photo.php

#file config/photo.php'policy' => \App\Policies\PhotoPolicy::class,

Features

1.Drag and Drop from Web.

2.Drag and Drop from Local machine

3.Crop and Resize

4.Webp conversion

5.Copy image URL and share to the Web

7.Size configurable and thumbnails generation

8.SEO friendly filename.

9.Translation

10.PHPunit test classes included.Drag n Drop from local machineResize-image

How to use in a Model as BelongsTo

First of all you need to put a line on your model migration for example posts.

$table->foreign('photo_id')->references('id')->on('photo_photos')->onDelete('set null');

Secondly you need to define relation on your model.

/**     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo     */publicfunctionphoto()    {return$this->belongsTo(\Photo\Models\Photo::class,'photo_id');    }

Third. Lets make upload on controller.

/**    * @var \Photo\Repositories\PhotoRepository    */protected$photoRepository;publicfunction__construct(PhotoRepository$photoRepository)    {$this->photoRepository =$photoRepository;    }publicfunctionstore(StoreRequest$request)    {//Your other code.$post->photo_id =$this->photoRepository->create($file, ['caption' =>$data['title']])->id;    }

You must resolve\Photo\Repositories\PhotoRepository via__construction Dependency injection.

Finally. Its time to render image to view.

{!!$post->photo->renderThumbnails()!!}

This will render following html code.

<picture><sourcetype="image/webp"srcset="https://YourSite.com/storage/posts/thumbnails/nice-quietly-their-belong-place-on-it-the-appeared-to.webp"><imgsrc="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>

Above code will render thumbnails in both webp and uploaded extension.To render larger image do following

{!!$post->photo->render('card-img-top')!!}

Here render method take class name as first argument and style as second.

How to upload file and get file path only.

namesapce App\Repositories;class PostRepository    {/**        * @var \Photo\Services\PhotoService        */protectedPhotoService$photoService;publicfunction__construct(PhotoService$photoService)        {$this->photoService =$photoService;        }publicfunctionstore(Request$request)        {$post =newPost();$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();                                 }                 }

[8]ページ先頭

©2009-2025 Movatter.jp