Как отправить png-изображение base64 в PHP

У меня есть png-изображение base64.
Я хочу использовать его в FPDF

Я создаю его следующим образом:

var dataURI = canvas.toDataURL("image/png");

И отправьте его в FPDF следующим образом:

$('#send').click(function(e){
    e.preventDefault(); 
    var uri = "create_pdf.php?imgURI="+ dataURI;
    window.open ( uri, "Temp wind" );
});

внутри create_pdf.php у меня есть:

require('fpdf.php');

$img = $_GET['imgURI'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);

$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image( $data, 0, 0, 200 );

$pdf->Output( "myimage.pdf", 'D' );

Вместо обычного запроса на сохранение PDF я получаю следующую ошибку:

Файл изображения не имеет расширения и не указан тип: �PNG IHDRSJ����IDATx......

Как правильно отправить это изображение в кодировке base64?


person Ginnani    schedule 19.02.2013    source источник
comment
Что случилось с str_replace(' ', '+', $img);? В данных Base 64 не должно быть пробелов.   -  person Brian    schedule 19.02.2013
comment
Вернитесь на шаг назад и попробуйте вернуть или сохранить декодированный PNG — убедитесь, что данные действительны, прежде чем пытаться преобразовать их в PDF.   -  person Brian    schedule 19.02.2013
comment
@ Брайан, я не знаю, часть PHP может быть совершенно неправильной, и я не уверен, нужно ли мне отправлять это dataURI как encodeURIComponent(dataURI)   -  person Ginnani    schedule 19.02.2013
comment
@ Брайан, да, одна из идей заключалась в том, чтобы сохранить это изображение во временной папке и использовать его как любой обычный URL-адрес изображения с FPDF, просто я не знаю, как это сделать ... : \ есть мысли?   -  person Ginnani    schedule 19.02.2013


Ответы (2)


Похоже, pfdf принимает в качестве параметра сохраненный iamge, а не base64. Попробуйте ответить здесь

person marbor3    schedule 19.02.2013
comment
Я уже видел этот ответ, я не могу понять, как его использовать в моем случае. - person Ginnani; 19.02.2013
comment
попробуйте сохранить изображение локально, здесь простой урок - person marbor3; 19.02.2013

Функция FPDF image() проверяет тип файла на основе строки $file, которая должна содержать путь к файлу. Если вы предлагаете тип, например, «png» в дополнительных параметрах, вы можете обойти эту часть.

После этого FPDF попытается открыть $file в своих функциях _parsepng и _parsejpg, чтобы вы могли легко использовать обёртку данных http://www.php.net/manual/en/wrappers.data.php

$fpdf->Image('data://image/png;base64,'.$image_data,null, null, 0, 0, 'png');
person user3052053    schedule 17.02.2014