我正在尝试使用laravel验证来验证上传的文件,但遇到了问题。
下面是我的代码:
$this->validate($request, [
'image' =>'mimetypes:image/jpeg,image/png,image/gif',
]);
$avatar = $request->file('image');
$fileName = time(). '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300,300)->save( public_path('uploads/avatar/' . $fileName));
$user = Auth::user();
$user->avatar = $fileName;
$user->save();问题是当我使用bmp文件时,我得到这个错误:Gd error
我正在使用干预图像包。我不想切换到imagick驱动程序。
有什么想法吗?
发布于 2017-03-06 15:59:06
查看干预包代码,您可以看到processBmp函数的两个实现:
干预/Image/Gd/Encoder.php:
protected function processBmp()
{
throw new \Intervention\Image\Exception\NotSupportedException(
"BMP format is not supported by Gd Driver."
);
}干预/Image/Imagick/Encoder.php:
protected function processBmp()
{
$format = 'bmp';
$compression = \Imagick::COMPRESSION_UNDEFINED;
$imagick = $this->image->getCore();
$imagick->setFormat($format);
$imagick->setImageFormat($format);
$imagick->setCompression($compression);
$imagick->setImageCompression($compression);
return $imagick->getImagesBlob();
}因此,我认为可以肯定地说,您不能使用GD驱动程序,只能使用imagick。
发布于 2017-03-06 16:11:16
只需使用"intervention/image": "~2"或将您的驱动程序更改为Imagick。GD本身并不支持BMP,这是一个已知的问题。您可以查看issue page on github以了解详细信息。
发布于 2017-03-06 16:17:13
为什么不对镜像image使用Laravel自定义规则
$this->validate($request, [
'image' =>'image',
]);https://stackoverflow.com/questions/42617754
复制相似问题