Imansible leggere l'image dal file .SVG (intervento / image)

Quindi sto facendo un uploader di immagini where voglio fare le anteprime ma anche il supporto di svg, dal momento che GD non support i tipi svg Ho provato prima a passare a imagick nel file config / image.php ma questo non ha cambiato nulla .

Di cui sono incerto perché afferma che lo support, mi manca un pacchetto richiesto che devo installare? Se sì quale?

Ma con ciò detto, quando provo a caricare un'image in svg, afferma:

NotReadableException in Decoder.php line 20: Unable to read image from file (D:\xampp\htdocs\laravel\public\up/2017/01/07000323-logoSep.svg). 

Per prima cosa ho provato ad affrontare questo problema con una semplice struttura IF, in quanto non ho davvero bisogno di una miniatura per le immagini SVG, usando -> mime () ma poi ho solo detto che l'image non può essere aperta / letta neanche.

 $image = $request->file('file'); $imageName = date("dHis-").$image->getClientOriginalName(); $uploadPath = public_path('up/').date("Y/m"); $image->move($uploadPath,$imageName); $imageMime = Image::make($uploadPath.'/'.$imageName); if($imageMime->mime() != "image/svg+xml"){} 

Con ciò ho pensato che questo fosse causato da un problema di authorization, quindi mi sono assicurato che tutti i miei file fossero leggibili e scrivibili, ma ciò non ha cambiato il problema.

Così ho provato a basarmi sull'estensione effettiva piuttosto che sul tipo mime che funziona nel mio caso come segue:

 public function dropzoneStore(Request $request){ $image = $request->file('file'); $imageName = date("dHis-").$image->getClientOriginalName(); $uploadPath = public_path('up/').date("Y/m"); $image->move($uploadPath,$imageName); if($image->getClientOriginalExtension() != 'svg'){ $imageThmb = Image::make($uploadPath.'/'.$imageName); $imageThmb->fit(300,300,function($constraint){$constraint->upsize();})->save($uploadPath.'/thm_'.$imageName,80); } return response()->json(['success'=>$imageName]); } 

Ma trovo che questo sia un approccio piuttosto hacker. Non c'è un modo migliore per filtrare o supportre i tipi svg con l'integer pacchetto di intervento / image?

Grazie in anticipo per ulteriori informazioni!

Quindi con ulteriori sperimentazioni e cercando di get qualcosa con cui lavorare rimanendo all'intervento / libreria di immagini ma senza convertire lo svg in qualcosa che ho seguito con la seguente soluzione:

 public function dropzoneStore(Request $request){ $image = $request->file('file'); $imageName = date("dHis-").preg_replace("/[^a-zA-Z0-9.]/","",$image->getClientOriginalName()); $uploadPath = public_path('up/').date("Y/m"); $image->move($uploadPath,$imageName); //Thumbnail Creation $thumbPath = $uploadPath.'/thumbs/'; File::isDirectory($thumbPath) or File::makeDirectory($thumbPath,0775,true,true); if($image->getClientOriginalExtension() != 'svg'){ $imageThmb = Image::make($uploadPath.'/'.$imageName); $imageThmb->fit(300,300,function($constraint){$constraint->upsize();})->save($uploadPath.'/thumbs/thm_'.$imageName,80); }else{ File::copy($uploadPath.'/'.$imageName,$uploadPath.'/thumbs/thm_'.$imageName); } return response()->json(['success'=>$imageName]); } 

Che mentre un po 'esagerato e un approccio hacky nei miei occhi, sembra ancora fare il trucco per lavorare a fianco del mio file system che richiede un pollice per each image.

Mentre potrei esaminarlo comunque quando amplierò ulteriormente l'uso del mio sito Web per convertire le immagini SVG in miniature. Ma per ora questo andrà bene e siccome i .svg non sono ancora utilizzati per lo sviluppo di un sito Web, posso essere a mio agio anche in termini di carico.

Ad each modo, ringrazio tutti coloro che hanno cercato di aiutarmi in questo caso!