web-dev-qa-db-ja.com

PHP:画像をURLからBase64に変換する方法は?

画像をそのURLからbase64に変換したい。

19
Sharj

データURLを作成しますか?その場合、MIMEタイプとその他の追加情報が必要です( Wikipedia を参照)。そうでない場合、これは画像の単純なbase64表現になります。

_$b64image = base64_encode(file_get_contents('path/to/image.png'));
_

関連ドキュメント: base64_encode()- functionfile_get_contents()- function

34
jwueller

私は同じような解決策を探すためにこの質問に行きました、実際、私はこれが元の質問であることを理解しました。

私も同じようにしたかったのですが、ファイルはリモートサーバーにあったので、次のようにしました。

$url = 'http://yoursite.com/image.jpg';
$image = file_get_contents($url);
if ($image !== false){
    return 'data:image/jpg;base64,'.base64_encode($image);

}

したがって、このコードは文字列を返す関数からのものであり、htmlのimgタグのsrcパラメータ内に戻り値を出力できます。テンプレートライブラリとしてsmartyを使用しています。次のようになります。

<img src="<string_returned_by_function>">

次の明示的な呼び出しに注意してください。

if ($image !== false)

ファイルのフェッチが成功した場合でも、file_get_contentsが0を返し、場合によってはfalseにキャストされる可能性があるため、これが必要です。実際にはこの場合は発生しませんが、ファイルのコンテンツを取得する場合は良い方法です。

12
mcelicalderon

これを試してください:-

例1:-

<?php 
function base64_encode_image ($filename=string,$filetype=string) {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}
?>

used as so

<style type="text/css">
.logo {
    background: url("<?php echo base64_encode_image ('img/logo.png','png'); ?>") no-repeat right 5px;
}
</style>

or

<img src="<?php echo base64_encode_image ('img/logo.png','png'); ?>"/>

例2:

$path= 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
9
Gaurang P

わかりませんが、この例を確認してください http://www.php.net/manual/es/function.base64-encode.php#99842

よろしく!

1
Lobo