如何测试base64字符串是否是PHP中的有效图像?

时间:2015-04-12 20:19:32

标签: php image base64

如何测试base64字符串是否是PHP中的有效图像?

我尝试了以下代码:

function convertAndSaveLogo($data, $id){
        if(isset($data->base64_image) && $data->base64_image){
            $imageData = base64_decode($data->base64_image);
            if($imageData){
                $source = imagecreatefromstring($imageData);
                if($source){
                    imagepng($source, getcwd()."../dir/image/".$id.".png", 5);
                    imagedestroy($source);
                }
            }
        }
    }

但它没有用。

2 个答案:

答案 0 :(得分:2)

试试这个:

if(base64_encode(base64_decode($img, true)) === $img)
   echo 'is a Base64-encoded string' ;

答案 1 :(得分:1)

研究两件事

  1. 如果$ data-> base64_image不包含以下内容: 'data:image / jpeg; base64,',在我的情况下,将它替换为什么工作:

    //in my case base64 data resides in: \Input::all()['img_data']
    $base64img = str_replace(
         'data:image/jpeg;base64,', 
         '', 
         \Input::all()['img_data']
    );
    
    $data = base64_decode($base64img);
    
  2. 如果你保存,你也可以查看solution

    // if it returns FALSE then the uploaded file
    // isn't a valid image
    getimagesize($created_file);