所以我做的图片上传,我想使缩略图而且还支持SVG为好,因为GD不支持SVG类型的我第一次尝试切换在config / image.php文件imagick但这并没有改变任何东西。
对此我不确定,因为它没有说明它支持的话,我失去了必需的包,我必须安装? 如果是这样的哪一个?
但随着中说,当我试图把它上传美国SVG图像:
NotReadableException in Decoder.php line 20:
Unable to read image from file (D:\xampp\htdocs\laravel\public\up/2017/01/07000323-logoSep.svg).
我第一次尝试用一个简单的解决这个IF结构,我并不真的需要SVG图像的缩略图,通过使用 - > MIME(),但那么它只是形象地说无法打开/读取两种。
$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"){}
与我首先想到这是由权限问题引起的,所以我确信我的所有文件的读取和写入,但并没有改变的问题。
于是,我就自己基础上的实际延伸,而不是MIME类型,其一定程度上确实在我的情况下,下面的工作:
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]);
}
但我觉得这是一个相当hackish的方法。 难道没有更好的方式来过滤掉或支持SVG类型与整个介入/图像包?
在此先感谢进一步的信息!