2015-04-12 2 views
3

Как проверить, является ли строка base64 допустимым образом в PHP?Как проверить, является ли строка 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); 
       } 
      } 
     } 
    } 

Но это не работает.

+0

ли данные URI, данные или просто base64 кодированное изображение? – Musa

+0

@Musa Строка base64 - это данные, предоставленные пользователем, мне нужно знать, является ли это допустимым кодированным изображением –

+0

Так как же ваша функция не работает? – Musa

ответ

0

Посмотрите на две вещи

  1. если $ данных-> base64_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); 
    
+0

Я не хочу сохранять файл, если base64 не является допустимым кодированным изображением. Поэтому я не могу использовать getimagesize. –

1

Попробуйте это:

if(base64_encode(base64_decode($img, true)) === $img) 
echo 'is a Base64-encoded string' ; 
Смежные вопросы