繁体   English   中英

如何将图像资源编码为base64?

[英]How to encode an image resource to 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 ) . "'>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM