Laravel 使用图像干预保存动画gif

Laravel 使用图像干预保存动画gif,laravel,base64,intervention,Laravel,Base64,Intervention,我试图上传动画gif作为用户头像。这些图像通过javascript转换为base64,然后使用图像干预上传 $img = Image::make(file_get_contents($file)); $mime = $img->mime(); if ($mime == 'image/jpeg') $ext= '.jpg'; elseif ($mime == 'image/png') $ext= '.png'; elseif ($mime == 'image/gif')

我试图上传动画gif作为用户头像。这些图像通过javascript转换为base64,然后使用图像干预上传

$img = Image::make(file_get_contents($file));
$mime = $img->mime();
if ($mime == 'image/jpeg')
    $ext= '.jpg';
elseif ($mime == 'image/png')
    $ext= '.png';
elseif ($mime == 'image/gif')
    $ext= '.gif';
elseif($mime == 'image/x-icon')
    $ext = '.ico';
elseif($mime == 'image/bmp')
    $ext = '.bmp';
else {
    $ext = '.jpg';
}
$name = time().$ext;
$path = public_path("images/$controller");
File::isDirectory($path) or File::makeDirectory($path);
if(property_exists($field, 'size') && !$ext=='.gif') {
    $field->size = explode('*',$field->size);
    if($img->resize($field->size[0], $field->size[1])->save("$path/$name")) {
        $data[$key] = $name;
    } else {
        $data[$key] = null;
    }
} else {
    if($img->save("$path/$name")) {
        $data[$key] = $name;
    } else {
        $data[$key] = null;
    }
}
但是,这些图像在上传后会丢失动画。我不知道该怎么办。如何不丢失动画

Javascript代码:

reader.onload = function(e) {
    var src = e.target.result;
    var name = file.name;
    var type = file.type;
    var img = "<img src='"+src+"' class='img-fluid mx-auto' alt='image'>";
    $('.card_group_'+field+' .previewContainer_'+count+' .file-loading').remove();
    $('.card_group_'+field+' .previewContainer_'+count+' .imagePreview').append(img);
    $('.card_group_'+field+' .previewContainer_'+count+' .card-header').append(name);
    var input = "input[name='"+field+"']";
    var added = $(input).val();
    if(added == '') {
        $(input).val(src);
    } else {
        $(input).val(added+';'+src);
    }
}
reader.readAsDataURL(file);
reader.onload=函数(e){
var src=e.target.result;
var name=file.name;
var type=file.type;
var img=“”;
$('.card_group_'+field+'.previewContainer_'+count+'.file loading').remove();
$('.card\u group\u'+field+'.previewContainer\u'+count+'.imagePreview')。追加(img);
$('.card\u group\u'+field+'.previewContainer\u'+count+'.card header')。追加(名称);
var input=“输入[名称=”+“字段+”]”;
添加的变量=$(输入).val();
如果(添加=“”){
$(输入).val(src);
}否则{
$(输入).val(添加+';'+src);
}
}
reader.readAsDataURL(文件);

现在,当它是gif时,您可以使用另一个函数保存,并继续使用库中的其他函数

if ($file->getClientOriginalExtension() == 'gif') {
    copy($file->getRealPath(), $destination);
}
else {
    $image->save($destination);
}

$width = $image->width();
$height = $image->height();
$image->destroy();

现在,当它是gif时,您可以使用另一个函数进行保存,并继续使用库中的其他函数

if ($file->getClientOriginalExtension() == 'gif') {
    copy($file->getRealPath(), $destination);
}
else {
    $image->save($destination);
}

$width = $image->width();
$height = $image->height();
$image->destroy();

能否显示将它们转换为base64的javascript?将问题更改为包含javascript。请检查。能否显示将其转换为base64的javascript?将问题更改为包含javascript。请检查。是的,在几天没有人回复之后,已经这样做了。不管怎样,谢谢你的建议。如果你是从论坛上复制评论,请给原作者信用是的,在几天没有人回复后已经这么做了。无论如何,谢谢你的建议。如果你是从论坛复制评论,请给原作者信用