2016-05-18 4 views
0

Я использовал данные-uri data:image/jpeg;base64,BASE64_HERE, чтобы передать изображение. Могу ли я передать это значение imagecreatefromjpeg(), чтобы сохранить его как файл изображения.Можно ли вызвать imagecreatefromjpeg() с параметром data-uri?

Как работает эта функция?

+0

разделит соответствующие фрагменты кода вы могли бы пробовали еще. – Daenarys

ответ

2

imagecreatefromjpeg() Функция создает изображение variable из файла, но не назад. Хотя у вас есть источник изображения в base64, вы можете использовать простую функцию file_put_contents() для сохранения файла. Например .:

$data = 'data:image/jpeg;base64,BASE64_HERE'; 

list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
$data = base64_decode($data); 

file_put_contents('/tmp/image.jpg', $data); 

Вы также можете использовать imagecreatefromjpeg(), а затем imagejpeg() метод, если он более предпочтителен для вас. Но лучший способ заключается в использовании imagecreatefromstring(), потому что он автоматически определяет, когда изображение jpg, gif, png или т.п. Например .:

$data = 'data:image/jpeg;base64,BASE64_HERE'; 
$image = imagecreatefromstring(base64_decode($data)); 
imagejpeg($image, 'image.jpg'); 
+0

k штраф .. но когда я использовал данные '$ data = ': image/png; base64, BASE64_HERE'; imagecreatefrompng ($ data); 'Тогда он работал правильно. Есть ли разница между работой этих функций? или вы можете объяснить, как эти функции работают? И спасибо за ваш быстрый ответ –

+0

Когда вы используете '$ im = imagecreatefrompng()', вам все равно нужно сохранить в файл с помощью другой функции, такой как 'imagepng ($ im, 'image.png');' или если вы хотите отобразить it 'header ('Content-Type: image/png'); imagepng ($ im); imagedestroy ($ im); '. – Gvidas

+0

Разница в том, что 'imagecreatefrompng()' и 'imagecreatefromjpeg()' сохраняет только изображение в * переменной изображения * и не сохраняет его в файл. – Gvidas

 Смежные вопросы

  • Нет связанных вопросов^_^