Я использую plupload для загрузки файла на моем php-сайте, при загрузке большого файла файл становится файлом с именем «blob» без суффикса. Я знаю, что это двоичный файл, который содержит необработанные данные, вопрос в том, как извлечь данные и сохранить их обратно в виде файла изображения, скажем .png / .jpg или т. Д.? Я старался:
$imageString = file_get_contents($blogPath);
$image = imagecreatefromstring($imageString);
Но это дает мне некоторую ошибку «Данные не в распознанном формате …», есть мысли? Заранее спасибо.
Ваш звонок в imagecreatefromstring()
должно работать просто отлично, если ваш file_get_contents()
работает. использование var_dump($imageString)
проверять. Вы хотели назвать свою переменную $blobPath
вместо $blogPath
?
Вам не нужно загружать это изображение, хотя. Просто переименуйте файл.
rename($blobPath, 'new/path/here.jpg');
Я сохраняю загруженные файлы изображений для позднего использования, например, прикрепляю их к сообщениям или продуктам (мой сайт — CMS для электронной коммерции). Я подумал, что мой файл изображения не был полностью загружен на сервер, размер изображения перед загрузкой составляет 6 МБ, но размер файла blob составляет всего 192 КБ, поэтому я думаю, что загружаемый файл — это просто кусок, а не весь пакет, и все же это подняло другой вопрос: как я должен взять все части и собрать их как один полный файл изображения? Как упоминалось ранее, я использую plupload для плагина js и php в качестве бэкэнда, php-код бэкэнда для обработки загрузки выглядит следующим образом:
move_uploaded_file($_FILES["file"]["tmp_name"], $uploadFolder . $_FILES["file"]["name"]);
Вместо этого вы должны сделать это для отображения изображения в браузере
<img src="data:image/jpeg;base64,'.base64_encode( $row['blob_image'] ).'"/>
Я не уверен, что делает imagecreatefromsting или как он кодирует изображение.
Я посмотрел на документацию для этой функции; ты пропускаешь:
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data); <--- this operation