Вывод PHP DataURI base64_encode
Я хочу взять локальное изображение, изменить его размер и вывести dataURI. Почему мой код base64_encode не работает?
<?php
// Create an image instance
$imagearray = array('pop3', 'aboutme', 'passions', 'lindahlstudios', 'blog');
foreach ($imagearray as $key) {
echo $key;
//load image
$im = imagecreatefrompng($key.'button4.png');
//set width of resize
$width = 70;
$ratio = $width / imagesx($im);
$height = imagesy($im) * $ratio;
echo ' resizeTo-'.$width.'x'.$height.'<br>';
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $im, 0, 0, 0, 0, $width, $height, imagesx($im), imagesy($im));
//save image to file
//imagepng($new_image, $key.'button4_'.$width.'.png');
//print DataURI
echo base64_encode($new_image);
imagedestroy($new_image);
}
?>
1 ответ
Решение
imagecreatetruecolor
возвращает ресурс изображения, что вам нужно для создания данных URI это файл изображения, а также формат данных URI data:[<MIME-type>][;charset=<encoding>][;base64],<data>
echo 'data:image/png;base64,'.base64_encode(file_get_contents($new_image_file));
Если вы не хотите сохранять файл для чтения, вы можете использовать imagepng
и выходная буферизация
ob_start();
imagepng($new_image);
echo 'data:image/png;base64,'.base64_encode(ob_get_clean());