ImageController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Handlers\ImageDealHandler;
  4. use App\Handlers\ImageUploadHandler;
  5. use App\Handlers\UploadFilesHandler;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Log;
  8. use Illuminate\Support\Str;
  9. use Intervention\Image\Facades\Image;
  10. class ImageController extends Controller
  11. {
  12. public function index(Request $request,ImageUploadHandler $filesHandler){
  13. $name=$request->input('text');
  14. $image=$filesHandler->save($request->file('image'),'avatar',rand(0,10));
  15. Log::error($image);
  16. $re=$this->CreateImg(1,env('APP_URL').'/img.jpg',$image['path'],$name,env('APP_URL').'/shi.png');
  17. return ['imageUrl'=>$re];
  18. }
  19. public function CreateImg($id,$main_url,$avatar,$nickname,$img_url){
  20. $imageDealHandler=new ImageDealHandler();
  21. $image=Image::make($main_url);
  22. $avatar=$imageDealHandler->circleImg($avatar);
  23. $avatar=Image::make($avatar);
  24. $avatar->resize(630,630);
  25. $img=Image::make($img_url);
  26. $image->insert($avatar,'',230,273);
  27. $image->insert($img);
  28. if (mb_strlen($nickname)==1){
  29. $y=600;
  30. $n=1;
  31. }elseif (mb_strlen($nickname)==2){
  32. $y=550;
  33. $n=2;
  34. }elseif (mb_strlen($nickname)==3){
  35. $y=500;
  36. $n=3;
  37. }elseif (mb_strlen($nickname)==4){
  38. $y=450;
  39. $n=4;
  40. }else{
  41. $y=450;
  42. $n=0;
  43. }
  44. for ($i=0;$i<$n;$i++){
  45. $image->text(mb_substr($nickname,$i,1), 932,$y+$i*120 , function ($font) {
  46. $font->file(public_path() . '/ziti/ht.otf');
  47. $font->size(105);
  48. $font->color('f5e990');
  49. $font->angle(0);
  50. });
  51. }
  52. $folder_name = "uploads/UserImg/" . date("Ym/d", time());
  53. $upload_path = 'public/'.$folder_name;
  54. // 获取文件的后缀名,因图片从剪贴板里黏贴时后缀名为空,所以此处确保后缀一直存在
  55. $extension = 'png';
  56. // 拼接文件名,加前缀是为了增加辨析度,前缀可以是相关数据模型的 ID
  57. // 值如:1_1493521050_7BVc9v9ujP.png
  58. $filename = $id.'_'.Str::random(10) .'.'. $extension;
  59. // File::isDirectory($upload_path) or File::makeDirectory($upload_path, 077, true, true);
  60. if (!file_exists(public_path($upload_path))) {
  61. mkdir(public_path($upload_path), 0777, true);
  62. }
  63. // 将图片移动到我们的目标存储路径中
  64. $image->save(public_path().'/'.$upload_path . '/' . $filename);
  65. $url=env('APP_URL').'/'.$upload_path.'/'.$filename;
  66. return $url;
  67. }
  68. }