Php base64解码gif格式的图像

Php base64解码gif格式的图像,php,base64,gif,Php,Base64,Gif,面对这样的问题,我无法将base64 gif字符串转换为gif文件并将其保存到磁盘,base64字符串获取其MIME类型-应用程序/八位字节流(视频流),插入以下代码(如下)并获取此错误-“imagecreatefromstring():中的数据格式不可识别”,我不知道该怎么办 $img = base64_decode($photo); $f = finfo_open(); $mime_type = finfo_buffer($f, $img, FILEINFO_MIME

面对这样的问题,我无法将base64 gif字符串转换为gif文件并将其保存到磁盘,base64字符串获取其MIME类型-应用程序/八位字节流(视频流),插入以下代码(如下)并获取此错误-“imagecreatefromstring():中的数据格式不可识别”,我不知道该怎么办

    $img = base64_decode($photo);
    $f = finfo_open();
    $mime_type = finfo_buffer($f, $img, FILEINFO_MIME_TYPE);
    if($mime_type !== ImageHelper::MIME_TYPE_PNG
        && $mime_type !== ImageHelper::MIME_TYPE_JPEG
        && $mime_type !== ImageHelper::MIME_TYPE_STREAM) {
        throw new HttpException(400);
    }

    if($mime_type == ImageHelper::MIME_TYPE_STREAM) { // image gif
        $name = ImageHelper::generateImageName() . '.gif';
        $path = $prefixPath . $name;
        $img_handler = imagecreatefromstring($img);
        if($img_handler !== false) {
            imagegif($img_handler, $path);
            imagedestroy($img_handler);
        } else {
            throw new HttpException(400);
        }
    } 
示例字符串 数据:图像/gif;base64,R0lGODlhuQBpANQdASAgQEIgQCBOQEJYQIk/QCCAQFQMQGDAQIQUCYQMULQIVCQMDWQCAGGESGCBJGE1ZGEPGWIJFGMCNGGDAGFYCWNG

更新:
有趣的是,当我转换gif文件时,我得到的格式是“application/octet stream”,而不是“image/gif”,为什么?我找不到答案…

您正在删除
数据:image/gif;base64,
在将字符串输入
base64_decode()
?@Scuzzy之前,从字符串的开头开始。这很奇怪,当我使用jpeg png格式时,我没有删除这一行,它应该被删除?是的,您可以尝试
base64_解码(end(explode(“,”,$photo))
(我确信有更好的strrpos/substr方法,但我觉得很懒)@Scuzzy没有错误,但动画不起作用,只有第一帧出现,没有任何移动。@Scuzzy我需要保持动态gif。我认为这是不现实的))