ImageController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\User;
  4. use App\Http\Requests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\File;
  7. use Illuminate\Support\Facades\Storage;
  8. use Illuminate\Support\Facades\Validator;
  9. use Intervention\Image\Facades\Image;
  10. class ImageController extends Controller
  11. {
  12. /**
  13. * 显示用户头像
  14. * @param $avatar_name
  15. * @return mixed
  16. */
  17. public function avatar($avatar_name)
  18. {
  19. list($user_id,$size) = explode('_',str_replace(".jpg",'',$avatar_name));
  20. $avatarFile = storage_path('app/'.User::getAvatarPath($user_id,$size));
  21. if(!is_file($avatarFile)){
  22. $avatarFile = public_path('static/images/default_avatar.jpg');
  23. }
  24. $image = Image::make($avatarFile);
  25. $response = response()->make($image->encode('jpg'));
  26. $image->destroy();
  27. $response->header('Content-Type', 'image/jpeg');
  28. $response->header('Expires', date(DATE_RFC822,strtotime(" 2 day")));
  29. $response->header('Cache-Control', 'private, max-age=86400, pre-check=86400');
  30. return $response;
  31. }
  32. public function show($image_name)
  33. {
  34. $imageFile = storage_path('app/'.str_replace("-","/",$image_name));
  35. if(!is_file($imageFile)){
  36. abort(404);
  37. }
  38. $image = Image::make($imageFile);
  39. if(config('tipask.upload.open_watermark') && $image_name != config('tipask.upload.watermark_image') && str_contains($image_name,'attachments')){
  40. $watermarkImage = storage_path('app/'.str_replace("-","/",config('tipask.upload.watermark_image')));
  41. $image->insert($watermarkImage, 'bottom-right', 15, 10);
  42. }
  43. $response = response()->make($image->encode('jpg'));
  44. $response->header('Content-Type', 'image/jpeg');
  45. $response->header('Expires', date(DATE_RFC822,strtotime(" 7 day")));
  46. $response->header('Cache-Control', 'private, max-age=259200, pre-check=259200');
  47. return $response;
  48. }
  49. /*编辑器图片上传*/
  50. public function upload(Request $request)
  51. {
  52. $validateRules = [
  53. 'file' => 'required|image|max:'.config('tipask.upload.attach_size'),
  54. ];
  55. if($request->hasFile('file')){
  56. $validator = Validator::make($request->all(),$validateRules);
  57. if ($validator->fails()) {
  58. return response('error');
  59. }
  60. $file = $request->file('file');
  61. $extension = $file->getClientOriginalExtension()?$file->getClientOriginalExtension():'jpg';
  62. $filePath = 'attachments/'.gmdate("Y")."/".gmdate("m")."/".uniqid(str_random(8)).'.'.$extension;
  63. Storage::disk('local')->put($filePath,File::get($file));
  64. return response(route("website.image.show",['image_name'=>str_replace("/","-",$filePath)]));
  65. }
  66. return response('error');
  67. }
  68. }