Как получить размер изображения из базы 64 строки в php

Я получаю базу 64 для строки для изображения, которую я должен перемещать в папке и сохранять путь изображения в базе данных, но мне нужно ограничить размер файла. Как я могу это сделать:

Мой код для генерации изображения из строки base 64 выглядит так:

/** if image is attached with request **/ $Image = "MyBase64StringHere"; list($type, $Image) = explode(';', $Image); list(, $Image) = explode(',', $Image); /** decode the base 64 image **/ $Image = base64_decode($Image); I have tried to get image size like: $size = getimagesize($Image); 

Но из этого я получаю ширину и высоту файла. Может кто-то сказать мне, как я могу получить размер файла из этого. Спасибо

Related of "Как получить размер изображения из базы 64 строки в php"

Проверьте это:

После декодирования попробуйте с этим: getimagesizefromstring() , если вы используете PHP 5.4 , если используете PHP 5.3 , то вы можете проверить со следующим методом.

 <?php if (!function_exists('getimagesizefromstring')) { function getimagesizefromstring($data) { $uri = 'data://application/octet-stream;base64,' . base64_encode($data); return getimagesize($uri); } } 

Функция getimagesize() должна работать с URI данных также:

 $Image = "MyBase64StringHere"; $size = getimagesize($Image); 

Идея получить размер изображения перед переходом в папку не очень хороша. Затем я решил переместить изображение во временную папку и получить размер с помощью пути изображения, а затем проверить размер изображения. С этим я могу легко проверить размер изображения и предотвратить его сохранение в базе данных, если предел размера превышает. Спасибо каждому за свое время.

Мой обновленный код выглядит так:

 /** if image is attached with request **/ $Image = "Yourbase64StringHere"; list($type, $Image) = explode(';', $Image); list(, $Image) = explode(',', $Image); /** decode the base 64 image **/ $Image = base64_decode($Image); /* move image to temp folder */ $TempPath = 'temp/'.time().".jpg"; file_put_contents($TempPath, $Image); $ImageSize = filesize($TempPath);/* get the image size */ if($ImageSize < 83889000){ /* limit size to 10 mb */ /** move the uploaded image **/ $path = 'uploads/'.time().".jpg"; file_put_contents($path, $Image); $Image = $path; /** get the image path and store in database **/ unlink($TempPath);/* delete the temporay file */ }else{ unlink($TempPath);/* delete the temporay file */ /** image size limit exceded **/ }