Как закодировать ресурс изображения на base64?

Мне было интересно, есть ли способ кодировать изображение на base64, если это был ресурс, например, если я загрузил изображение с помощью GD

$image = imagecreatefromjpeg("captcha/$captcha-$num.jpg"); // Add some filters imagefilter($image, IMG_FILTER_PIXELATE, 1, true); imagefilter($image, IMG_FILTER_MEAN_REMOVAL); 

Если это мой код и вместо сохранения изображения и его отображения, используя

 <img src='someimage.jpg'> 

Я хотел отобразить его как URI данных, не сохраняя его, например

 <img data='src="data:image/jpeg;base64,BASE64_HERE'> 

Как я могу это сделать?

 $image = imagecreatefromjpeg("captcha/$captcha-$num.jpg"); // Add some filters imagefilter($image, IMG_FILTER_PIXELATE, 1, true); imagefilter($image, IMG_FILTER_MEAN_REMOVAL); ob_start(); // Let's start output buffering. imagejpeg($image); //This will normally output the image, but because of ob_start(), it won't. $contents = ob_get_contents(); //Instead, output above is saved to $contents ob_end_clean(); //End the output buffer. $dataUri = "data:image/jpeg;base64," . base64_encode($contents); 

Я написал для этого функцию. Он также позволяет изменять формат выходного изображения «на лету».

 // Example $im = imagecreate( 100, 100 ); imagecolorallocate( $im, 0, 0, 0 ); echo gdImgToHTML($im); // Creates an HTML Img Tag with Base64 Image Data function gdImgToHTML( $gdImg, $format='jpeg' ) { ob_start(); if( $format == 'jpeg'){ imagejpeg( $gdImg ); } else if( $format == 'png' ){ imagepng( $gdImg ); } else if( $format == 'gif' ) { imagegif( $gdImg ); } $image_data = ob_get_contents(); ob_end_clean(); return "<img src='data:image/$format;base64," . base64_encode( $image_data ) . "'>"; }